プロが教えるわが家の防犯対策術!

A列に番号が入力されています、何行あるかは決まっていません。
A列に同じ番号があった場合、2個隣のC列にある値が一番大きい行だけ残して他の行を削除したいです。
重複は何個あるかわかりません。

VBAで可能でしょうか?
宜しくお願いいたします。

質問者からの補足コメント

  • ご質問ありがとうございます、データは1行目からです。宜しくお願い致します。

      補足日時:2023/04/11 12:51

A 回答 (4件)

こんにちは



不明点は勝手に解釈。
・空白セルは対象とせず無視します。
・C列が同値の場合は、行番号の小さい方を残します。

以下では、削除対象行を選択するまでにしてあります。

Sub Q_13425088()
Dim rw As Long, i As Long, k As Long, d As Long
Dim u As Range, v, tmp, tmpc

v = Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp)).Resize(, 3).Value
For rw = 1 To UBound(v)
tmp = v(rw, 1)
If tmp <> "" Then
k = rw
tmpc = v(rw, 3)
For i = rw + 1 To UBound(v)
If v(i, 1) = tmp Then
d = i
If v(i, 3) > tmpc Then
tmpc = v(i, 3)
d = k
k = i
End If
v(d, 1) = ""
If u Is Nothing Then Set u = Cells(d, 1) Else Set u = Union(u, Cells(d, 1))
End If
Next i
End If
Next rw

If Not u Is Nothing Then u.EntireRow.Select
End Sub
    • good
    • 1
この回答へのお礼

fujillinさんありがとうございます!理想の結果がでました。
大変助かりました!

お礼日時:2023/04/12 06:00

こんにちは


#2様ご提案の手順で範囲など少し改修が必要かと思いますが
記録マクロで出来ると思いますよ 挑戦してみては・・
    • good
    • 1
この回答へのお礼

ありがとうございます、近いものができました。もう少し勉強してみます。

お礼日時:2023/04/12 06:04

並びを変えたくない場合は、連番を別途振る必要がありますが、


キーをA,CでソートしAの先頭レコード、もしくは最後尾レコード
を残しそれ以外を削除。
元の連番でソート
    • good
    • 1
この回答へのお礼

ありがとうございます、確かにできますね!

お礼日時:2023/04/12 06:02

1行目は見出し行で、データは2行目からでしょうか。

(削除対象となるのは2行目以降)
それとも、1行目からデータでしょうか。(削除対処となるのは1行目以降)
    • good
    • 0
この回答へのお礼

ありがとうございました!

お礼日時:2023/04/12 06:02

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!