「excel マクロ 条件 行 削除」
「マクロ 行の削除 ある値の時」
「vba 条件 行 削除 ワイルドカード」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスが時折あります。
条件を指定して、合致した行を削除するマクロ・VBA(Visual Basic for Applications)のコードを探している方による検索です。
ワイルドカードを使って条件を指定して行を削除するサンプルマクロ
ワイルドカードを使って条件を指定して、合致した行を削除する簡単なExcelマクロをご紹介しておきましょう。
下図のようなデータがあったときに、
都道府県が「東京」「東京都」「大阪」「大阪府」の行を削除するマクロです。
なお、A列の姓は必ず何らかのデータが入っているものとします。
Dim i As Long For i = Range("A1").End(xlDown).Row To 2 Step -1
With Cells(i, "G")
If _
.Value Like "東京*" Or _
.Value Like "大阪*" Then
.EntireRow.Delete
End If
End With
Next i
End Sub
A列の一番下のデータから上方向に向かってループを回して、
For i = Range("A1").End(xlDown).Row To 2 Step -1
もしも、G列のデータが「東京」か「大阪」で始まっていたら、
With Cells(i, "G")
If _
.Value Like "東京*" Or _
.Value Like "大阪*" Then
その行全体を削除しています。
.EntireRow.Delete
サンプルマクロの解説
上記のマクロは、A列に必ずデータが入っているという条件にしているので、「Range("A1").End(xlDown).Row」というコードでA列の一番下の行番号を取得しています。
もしA列に空白セルが存在する可能性があるのなら「Cells(Rows.Count, 1).End(xlUp).Row」というコードにしましょう。
削除系のループでは、後から前に向かってループを回すのが定番の処理です。
納得できない方は、
For i = 2 To Range("A1").End(xlDown).Row Step 1
と前からループを回したときに、上手く削除できないことをご確認ください。
条件の指定で、Or条件を指定するためのOr演算子と、あいまい条件にするためにLike演算子とワイルドカード「*」を使っています。
If _
.Value Like "東京*" Or _
.Value Like "大阪*" Then
- Newer:表のセル内余白をWord VBAで設定する
- Older:Word VBAで総ページ数・ページ番号を取得する
Home » Excel VBA Rangeオブジェクト » 行・列を表すRange » 条件に合致した行を削除するExcelマクロ