|
▼まりな さん:
>例えば、1列目ではなく、2列目で重複しているデータが2つあるものに対して
>そのデータの15列目に「重複」というしるしをつける場合はどこを変更すればいいので
>しょうか?
それでは、
プログラムの最初の部分に 検索対象列(番号)とその検索開始行
および、結果を書き込む列番号を 定数Const で指定するように
しましょう
Sub Try2()
Const COL1 = 2 '検索対象列
Const ROW1 = 1 '検索する最初の行
Const COL2 = 15 '結果を書き込む列
Dim i As Long, n As Long
Dim v
Dim dic As Object
'↓検索範囲データを(文字列にして)配列にコピーする
With Columns(COL1).Cells
v = Application.Text(Excel.Range _
(.Item(ROW1), .Item(.Count).End(xlUp)), "@")
End With
'↓Dicionaryを使って重複チェック
Set dic = CreateObject("Scripting.Dictionary")
ReDim dup(1 To UBound(v), 0)
For i = 1 To UBound(v)
If dic.Exists(v(i, 1)) Then 'すでにこのキーが辞書にあれば
n = dic(v(i, 1)) 'このキーがどの行で出現したかを得る
If n > 0 Then
dup(n, 0) = "重複" '直前の出現行に「重複」書き込み
dic(v(i, 1)) = 0
End If
dup(i, 0) = "重複" 'この行に「重複」書き込み
Else
dic(v(i, 1)) = i '行のデータを出現行とともに辞書に入れる
End If
Next
Set dic = Nothing
' COL2 列に結果を書き出す
Cells(ROW1, COL2).Resize(UBound(dup)).Value = dup
End Sub
|
|