Cells(i, 2) のデータ以外のデータ [Cells(i, 1),Cells(i, 3)...] も同様であるなら、
「フィルタオプション」で重複しないデータを生成する事ができますが、Cells(i, 2) だけのため使うことができません。
ソート(並び替え[A to Z])をしてもOKということですから、Findメソッドは使いませんでした。
あくまでサンプルなので、ご期待通りの動作になるかは不明ですが、試してみてください。
--------------------------------------------------------------------------------
Sub test()
Dim ws As Worksheet ' シート
Dim i As Long ' ループカウンタ
Dim rngTarget As Range ' ターゲットRANGE
Dim strChangeValue As String ' 項目変更値
Const lngTargetCol As Long = 1 ' 対象列
' シートセット
Set ws = ActiveSheet
' SORT(並び替え)
Set rngTarget = ws.Cells(1, lngTargetCol)
Call rngTarget.Sort(Key1:=rngTarget, Order1:=xlAscending, Header:=xlGuess)
' 行ごとの処理
Do
i = i + 1
If IsEmpty(ws.Cells(i, lngTargetCol)) Then Exit Do
If i = 1 Then
' 最初の処理
strChangeValue = ws.Cells(i, lngTargetCol)
Else
If strChangeValue = ws.Cells(i, lngTargetCol) Then
' 項目が重複している場合、行の削除
ws.Rows(i & ":" & i).Delete Shift:=xlUp
' 削除した行だけカウントダウン
i = i - 1
Else
' 項目名が変わった場合、項目変更値に格納
strChangeValue = ws.Cells(i, lngTargetCol)
End If
End If
Loop
End Sub
--------------------------------------------------------------------------------
|