• ベストアンサー

【VBA】重複データがあったら印をつける

H列に重複データがあったら、B列に丸印を付けたいです。 重複データのうち、1件に印をつけることはできました。(Do LoopとIf文で) (例えば、Aという重複データが2つあったら、そのうちの1つに印はつきました) しかしながら、重複データ2つ共に印を付けるように出来ません。 H列は可変、また並べ替えをしており、上下のデータを確認すれば重複が分かる状態です。 どなたか教えていただけますでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

#2です。 回答に、無駄な範囲指定している部分 がありましたので、下記に訂正します。 c = Application.WorksheetFunction.CountIf(Range("h2:H" & lr), Cells(i, "H")) に訂正します。 ーー Application.WorksheetFunction.関数名の利用は、エクセルのワークシート関数とは関数とは機能的に使い方が別だとおもう。VBAの関数を使っていると馬鹿にしないでね。小生は、長年の経験で、よく考えて回答しているよ。 別のやり方もあるが、重複行の全部に、印をつけるなら、これが最も簡潔なコードと思う。処理速度も、1回の全行読みで完了するので、悪くはないだろう。

jojojo5k
質問者

お礼

ご丁寧にありがとうございます。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

関数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

jojojo5k
質問者

お礼

ご回答ありがとうございます! 関数であれば、やり方が分かったのですが、マクロだと分からず困っておりました。 参考にさせていただきます。

  • HohoPapa
  • ベストアンサー率65% (455/693)
回答No.1

データが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

jojojo5k
質問者

お礼

ご回答ありがとうございます! マクロでのやり方が知りたかったので、ご丁寧に記載くださり、非常に助かりました。

関連するQ&A