• ベストアンサー

重複削除

初歩的な質問ですいません下記のようなVBAを作成したいのですが、下記A列ですが、可変にしたい場合どうしたらいいかわかりません。ActiveCellでやるのでしょうか?よろしくお願いします。  A    1 りんご   2 みかん      3 あんず      4 あんず   5 みかん      6 めろん    ↓  A     1 りんご   2 みかん      3 あんず      4 めろん      通報する

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

  • ベストアンサー
  • SI299792
  • ベストアンサー率47% (774/1620)
回答No.1

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)
回答No.2

重複の削除ですね。最終行が可変ということでしたら 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

関連するQ&A