こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

H列に重複データがあったら、B列に丸印を付けたいです。
重複データのうち、1件に印をつけることはできました。(Do LoopとIf文で)
(例えば、Aという重複データが2つあったら、そのうちの1つに印はつきました)

しかしながら、重複データ2つ共に印を付けるように出来ません。

H列は可変、また並べ替えをしており、上下のデータを確認すれば重複が分かる状態です。

どなたか教えていただけますでしょうか。

投稿日時 - 2018-07-06 18:17:00

QNo.9515762

困ってます

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

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

投稿日時 - 2018-07-07 09:46:50

お礼

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

投稿日時 - 2018-07-07 13:10:39

ANo.3

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.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

投稿日時 - 2018-07-06 21:38:30

お礼

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

投稿日時 - 2018-07-07 03:46:25

ANo.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

投稿日時 - 2018-07-06 21:10:34

お礼

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

投稿日時 - 2018-07-07 03:41:36