つい集めてしまうものはなんですか?

excelマクロ超初心者です。

E列に下記のようにデータが入っていたとします。

  E列
1 いちご
2 りんご
3 みかん
4 いちご
5 りんご
6 れもん

これを重複セルを削除して
  E列
1 いちご
2 りんご
3 みかん
4 れもん

としたいのですが、どうすればいいでしょうか?
自分なりに調べて、下記のように記述したのですが、

Sub test()
lastRow = wb.Sheets("Sheet1").Range("E" & Rows.Count).End(xlUp).Row 'E列最終行
For i = lastRow To 2 Step -1
If Cells(i, 5).Value = Cells(i - 1, 5).Value Then
Cells(i, 5).EntireRow.Delete Shift:=xlUp
End If
Next i

End Sub()

E4列から下のデータしか重複セルが削除されません。
ここでいうlastRow To 2 Step -1はどういう意味なのでしょうか?
すみませんが宜しくお願いします。

A 回答 (2件)

こんにちは!



>E4列から下のデータしか重複セルが削除されません
の原因と
>lastRow To 2 Step -1はどういう意味なのでしょうか?
の意味はすでに回答されていますので・・・

一例です。

Sub test()
Dim i As Long
For i = Cells(Rows.Count, 5).End(xlUp).Row To 2 Step -1
If WorksheetFunction.CountIf(Range(Cells(1, 5), Cells(i, 5)), Cells(i, 5)) > 1 Then
Cells(i, 5).Delete (xlUp)
End If
Next i
End Sub

※ 行すべてを削除ではなく、E列セルのみ削除がご希望ですよね?
※ 重複行すべてを削除の場合は
>Cells(i, 5).Delete (xlUp)

>Rows(i).Delete (xlUp)
としてみてください。

こんな感じではどうでしょうか?m(__)m
    • good
    • 0

>ここでいうlastRow To 2 Step -1はどういう意味なのでしょうか?


については
http://officetanaka.net/excel/vba/tips/tips14.htm
の最後の方に説明されています。

>E4列から下のデータしか重複セルが削除されません。
記述されているコードでは
同じ内容が、連続してある場合に削除ではないでしょうか?
If Cells(i, 5).Value = Cells(i - 1, 5).Value Then
の部分の意味をよく考えて見てください。

重複を削除する方法が
http://www.eurus.dti.ne.jp/yoneyama/Excel/vba/vb …
にいくつも説明されていますが
わかりやすいのは、フィルターオプションの機能を利用した方法ではないでしょうか。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報