- ベストアンサー
【VBA】重複データがあったら印をつける
H列に重複データがあったら、B列に丸印を付けたいです。 重複データのうち、1件に印をつけることはできました。(Do LoopとIf文で) (例えば、Aという重複データが2つあったら、そのうちの1つに印はつきました) しかしながら、重複データ2つ共に印を付けるように出来ません。 H列は可変、また並べ替えをしており、上下のデータを確認すれば重複が分かる状態です。 どなたか教えていただけますでしょうか。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#2です。 回答に、無駄な範囲指定している部分 がありましたので、下記に訂正します。 c = Application.WorksheetFunction.CountIf(Range("h2:H" & lr), Cells(i, "H")) に訂正します。 ーー Application.WorksheetFunction.関数名の利用は、エクセルのワークシート関数とは関数とは機能的に使い方が別だとおもう。VBAの関数を使っていると馬鹿にしないでね。小生は、長年の経験で、よく考えて回答しているよ。 別のやり方もあるが、重複行の全部に、印をつけるなら、これが最も簡潔なコードと思う。処理速度も、1回の全行読みで完了するので、悪くはないだろう。
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
関数COUNTIFを使うのが一番コードが簡単だろう。 両方や複数の行に印を付ける場合、単純な繰り返し判別で済む。 http://www2.moug.net/tech/exvba/0030005.html ーー Sub test01() lr = Range("H10000").End(xlUp).Row For i = 1 To lr c = Application.WorksheetFunction.CountIf(Range("h2:H10000"), Cells(i, "H")) If c >= 2 Then Cells(i, "B") = "●" End If Next i End Sub
お礼
ご回答ありがとうございます! 関数であれば、やり方が分かったのですが、マクロだと分からず困っておりました。 参考にさせていただきます。
- HohoPapa
- ベストアンサー率65% (455/693)
データがH列の1行目から下方向に並び、 かつ、ソートしてあるとのことであれば、 マクロによらずとも B1=IF(H1=H2,"重","〇") B2以下は =IF(OR(H2=H3,H2=H1),"重","〇") という計算式でいけるだろと思います。 VBAなら、 Sub abc() Dim RowCounter As Long With ThisWorkbook.Sheets(1) RowCounter = 1 Do If .Cells(RowCounter, 8).Value = "" Then Exit Sub If RowCounter = 1 Then If .Cells(RowCounter, 8).Value = .Cells(RowCounter + 1, 8).Value Then .Cells(RowCounter, 9).Value = "重" Else .Cells(RowCounter, 9).Value = "〇" End If Else If ((.Cells(RowCounter, 8).Value = .Cells(RowCounter - 1, 8).Value) Or _ (.Cells(RowCounter, 8).Value = .Cells(RowCounter + 1, 8).Value)) Then .Cells(RowCounter, 9).Value = "重" Else .Cells(RowCounter, 9).Value = "〇" End If End If RowCounter = RowCounter + 1 Loop End With End Sub
お礼
ご回答ありがとうございます! マクロでのやり方が知りたかったので、ご丁寧に記載くださり、非常に助かりました。
お礼
ご丁寧にありがとうございます。