- ベストアンサー
重複削除
初歩的な質問ですいません下記のようなVBAを作成したいのですが、下記A列ですが、可変にしたい場合どうしたらいいかわかりません。ActiveCellでやるのでしょうか?よろしくお願いします。 A 1 りんご 2 みかん 3 あんず 4 あんず 5 みかん 6 めろん ↓ A 1 りんご 2 みかん 3 あんず 4 めろん 通報する
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
B列をワークエリアに使ってよろしいでしょうか。 B列に番号を振って並べ替え、同じものを削除して、もとにもどす方法です。 ' Sub Macro1() ' ' Macro1 Macro ' Dim iy1 As Integer Dim iye As Integer ' Aplication.ScreenUpdating = False '実行速度を上げる ' iye = [A1].End(xlDown).Row ' For iy1 = 1 To iye Cells(iy1, "B") = iy1 Next iy1 ' [A:B].Sort Key1:=[A1] ' For iy1 = iye - 1 To 1 Step -1 If Cells(iy1, "A") = Cells(iy1 + 1, "A") Then Cells(iy1 + 1, "A").Range("A1:B1").Delete Shift:=xlUp End If Next iy1 ' [A:B].Sort Key1:=[B1] [B:B].ClearContents ' End Sub ’ B列か使えないならご記入ください。(方法はありますが、実行速度は下がります) また、ダブりを削除できたら、並び順はどうでもいいのならもご記入ください。B列が必要なくなり、実行速度が上がります。 また、このプログラムはデータが2件以上ないと、誤動作をします。その可能性がある場合ご記入ください。
その他の回答 (1)
- kkkkkm
- ベストアンサー率66% (1725/2595)
重複の削除ですね。最終行が可変ということでしたら Cells(Rows.Count, "A").End(xlUp) が最終行のセルになりますので以下のコードでいかがでしょう。 Sub Example() Range(Cells(1, "A"), Cells(Rows.Count, "A").End(xlUp)).RemoveDuplicates Columns:=1, Header:=xlNo End Sub