今回はエクセルで特定の文字があった場合、その行ごと削除するマクロについて記事を書いていきます。
前回は複数のCSVファイルを1つに貼りつけるマクロについて記事を書いたのですが、そのまとめたエクセルファイルに必要ない行を削除したいという用途がある場合などに備えて、今回は行を削除するマクロのコードについて書いておきます。

今回のマクロもソースコードをコメント付きで書いておきます。
まぁ自分が業務で必要になった時も、必要なコードをコピペできるという重要な使い道もありますので笑
前回のエクセルマクロ記事はコチラ
↓↓↓


特定の文字があった場合、行ごと削除するマクロの紹介
実際のコードを紹介
A列に「テスト」という文字があった場合、その行ごと削除するマクロ
Sub テストという文字があったら行ごと削除するマクロ()
Dim ws As Worksheet
Dim lastRow As Long
Dim i As Long
' アクティブなシートを取得(または特定のシートを指定)
Set ws = ActiveSheet
' A列の最終行を取得
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
' 下から上へループして「テスト」という文字の行を削除
For i = lastRow To 1 Step -1
If ws.Cells(i, 1).Value = "テスト" Then
ws.Rows(i).Delete
End If
Next i
' オブジェクト変数を解放
Set ws = Nothing
End Sub
A列に「テスト」という文字を含む場合、その行ごと削除するマクロ
Sub テストという文字を含む行ごと削除するマクロ()
Dim ws As Worksheet
Dim lastRow As Long
Dim i As Long
' アクティブなシートを取得(または特定のシートを指定)
Set ws = ActiveSheet
' A列の最終行を取得
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
' 下から上へループして「テスト」という文字を含む行を削除
For i = lastRow To 1 Step -1
If InStr(ws.Cells(i, 1).Value, "テスト") > 0 Then
ws.Rows(i).Delete
End If
Next i
' オブジェクト変数を解放
Set ws = Nothing
End Sub
A列に「テスト」という文字を含む場合、その行とその行の下2つの行も削除するマクロ
Sub テストという文字を含む行とその行の下2つの行も削除するマクロ()
Dim ws As Worksheet
Dim lastRow As Long
Dim i As Long
' アクティブなシートを取得
Set ws = ActiveSheet
' A列の最終行を取得
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
' 下から上へループして「テスト」を含む行を削除
For i = lastRow To 1 Step -1
If InStr(ws.Cells(i, 1).Value, "テスト") > 0 Then
' まず2つ下の行を削除(存在する場合のみ)
If i + 2 <= lastRow Then
ws.Rows(i + 2).Delete
End If
' 次に1つ下の行を削除(存在する場合のみ)
If i + 1 <= lastRow Then
ws.Rows(i + 1).Delete
End If
' 最後に「テスト」を含む行を削除
ws.Rows(i).Delete
End If
Next i
' オブジェクト変数を解放
Set ws = Nothing
End Sub
試験機や評価結果などのCSVファイルは、最初の行に日付や日時が書かれていることがあり、実際に必要なデータは2, 3行目からだったりするので、今回はそれぞれ3パターンのマクロを作成してみました。
また特定文字を完全一致している場合や、特定文字を含んだ際にその行ごと削除するという使い方もあるかと思い、今回は色々なパターンに備えてマクロコードを作成してあります。
知っていると便利なコードを紹介



今回のマクロでは必要ないですが、知っていると動作がスムーズになる便利はコードを紹介しておきます。
マクロによっては何度も画面更新や自動計算をして動作が遅くなったり、画面がチカチカして見にくい場合があります。
そんな時は下記のコードを、最初と最後に入れておくことで動作がスムーズになります。
マクロ動作をスムーズにするコード
下記にある2つのコードを最初と最後に入れておくことで、動作をスムーズにすることが可能です
Sub TEST()
' 画面更新をオフ(※チカチカ防止)
Application.ScreenUpdating = False
' 自動計算をオフにする
Application.Calculation = xlCalculationManual
'ここにマクロのソースコードを入力
' 画面更新を元に戻す(※チカチカ防止)
Application.ScreenUpdating = True
' 自動計算を元に戻す
Application.Calculation = xlCalculationAutomatic
End Sub



私の場合ですが普段は入れていないのですが、大量データを動かす場合や、マクロ実行中に画面がチカチカする場合は、このコードを入れております
いかがでしたか?今回は前回に引き続きエクセルのマクロについて記事を書いてみました。
普段は機械設計や3DCAD、3Dプリンターの記事がメインですが、機械設計業界では評価データをまとまるという業務もあるため、その効率化が出来ればと思って今回のマクロを残しておきました。
このホームページでは機械設計や3DCAD関係に関する記事を書いていく予定ですので、今後も気になる方は是非ブックマークよろしくお願いいたします。
X(旧Twitter)も更新しておりますので、もしよければフォローしていただければ嬉しいです。