Excel-VBA 列の重複セル比較して行を削除するマクロ

2019/12/07

プログラム

t f B! P L
Excel VBAマクロ。今回は
列の重複セル比較して行を削除するマクロ
を示す。

■Excel-VBA 列の重複セル比較して行を削除するマクロ

Sub sample24()
Dim MR As Long
Dim MC As Long
Dim DP As Long
MR = Cells(Rows.Count, 1).End(xlUp).Row 'ω'最終行,A:A
MC = Cells(1, Columns.Count).End(xlToLeft).Column 'ω'1:1,最終列
DP = 15

    Range(Cells(1, 1), Cells(MR, MC)).Sort _
    Key1:=Cells(1, DP), Order1:=xlAscending, _
    Header:=xlYes

    Dim j As Long
    With Cells(2, DP)
        For j = .CurrentRegion.Rows.Count To 1 Step -1
            If .Offset(j, 0) = .Offset(j - 1, 0) Then .Offset(j, 0).EntireRow.Delete
        Next j
    End With
End Sub
※[2.~4.] 変数宣言。
※[5.~6.] 最終行数、最終列数取得。
※[7.] 重複セル比較に15列目(O列)を指定。
※[9.~11.] 15列目(O列)昇順で全体を並べ替え。
※[13.] 変数宣言。
※[14.~18.] 2行目、15列目(O列)のセルを基準とする。
最終行セルと1つ上のセルを比較して重複なら
最終行を削除する。
最終行から1行目までFor Nextループ。

■マクロ実行対象

「部品データ_191128.xlsx」の「部品表」シート。15列目(O列)。

■マクロ実行結果

実行すると、15列目(O列)のセル重複した行は
すべて削除される。
「AA」、「旧方式」、「新方式」、「」(ブランク)が
1行ずつ残る。

■あとがき

今回はExcel VBAマクロ。
列の重複セル比較して行を削除するマクロ
を示した。

LibreOffice Basicで使う場合は
コードの先頭行に
「Option VBASupport 1」を記述する。
Option VBASupport 1

Sub sample24()
Dim MR As Long
Dim MC As Long
Dim DP As Long
MR = Cells(Rows.Count, 1).End(xlUp).Row 'ω'最終行,A:A
MC = Cells(1, Columns.Count).End(xlToLeft).Column 'ω'1:1,最終列
DP = 15

    Range(Cells(1, 1), Cells(MR, MC)).Sort _
    Key1:=Cells(1, DP), Order1:=xlAscending, _
    Header:=xlYes

    Dim j As Long
    With Cells(2, DP)
        For j = .CurrentRegion.Rows.Count To 1 Step -1
            If .Offset(j, 0) = .Offset(j - 1, 0) Then .Offset(j, 0).EntireRow.Delete
        Next j
    End With
End Sub
For Nextループでセルを逐次比較するので
データ量が多い場合(十万行単位)時間がかかる。
配列を使用して処理時間を短くする方法を

LibreOffice-VBA 重複セルに連番をふって1以外削除するマクロ

では使用しているので参考。
以上。

ブログ アーカイブ

ラベル

このブログを検索

スポンサーリンク

自己紹介

機械メーカー総合職正社員10年勤務後退職。 エクセルVBAプログラム歴 5年。 LibreOffice(無料)でVBAマクロ検証。
■Fortniteクエスト攻略動画■
■Twitter■
⇒詳細プロフィールを表示

QooQ