Excelで大量のデータを含む表を編集する際、「『キャンセル』と書かれた行を一括削除したい」「特定の製品名を含む行だけをリストから除外したい」といった場面は頻繁に発生します。
データ数が少なければ手作業で1行ずつ削除することもできますが、数百行、数万行に及ぶデータでそれを行うと時間がかかるだけでなく、必要なデータまで誤って削除してしまうリスクが高まります。
Excelで特定の文字を含む行を一括で綺麗に削除するには、
最も手軽に操作できる「フィルター機能を使った手動削除」と、大量データや繰り返し作業を自動化する「VBA(マクロ)を使った自動削除」の2つの効果的なアプローチがあります。
今回は、操作画面に沿って今すぐできる基本手順から、実務をスムーズにする自動処理マクロの作成方法までを図解します。
行削除のノウハウをマスターして、無駄なデータ整理作業から解放され、定時退勤を実現しましょう!
記事のポイント
- 基本編:Excelの標準機能である「フィルター」で削除したい文字を抽出し、一括で行削除する最も簡単な手順
- 手作業で行削除を行うと行ズレや誤削除の原因になるため、フィルターかVBAで処理するのが安全
- マクロで下から上に向かってループ処理(Step -1)を行う理由は、削除による行インデックスのズレを防ぐため
- 応用編:VBAマクロを使用すれば、ボタン一つで数万行のデータから対象文字列を含む行を一括削除できる
- フィルター削除時はAlt+;(可視セル選択)を使って非表示行の巻き添え削除を防ぐテクニック
以前、数万行ある売上リストから「キャンセル」の行を手作業で消そうとして、誤って必要な行まで消してしまい、データがぐちゃぐちゃになって青ざめたことがあります。マクロで消す時も、上から順に削除して行がズレるバグに気づかず、二重に失敗した苦い思い出があります…。
特定の文字を含む行を削除する2つのアプローチ

Excelで条件に一致する行を一括削除するためのアプローチは、データの規模や作業の頻度に応じて「フィルター機能」と「VBAマクロ」を使い分けるのがベストプラクティスです。それぞれの特徴と違いを理解しておきましょう。
フィルター手動削除とVBA自動削除の使い分け
第1の基本アプローチは、Excelの標準機能である「オートフィルター」を活用する手法です。対象の列で「テキストフィルター > 指定の値を含む」を設定し、抽出された行(非表示行を除く可視セル)を選択して一括削除します。
特別な知識が不要で、数万行程度までのデータであればこの方法で処理できます。
第2の応用アプローチは、「VBAマクロ」を実行する手法です。下から上へ行をスキャンし、特定の文字列が含まれる場合にその行を自動的に削除するコードを実行します。
マクロを一度登録しておけば、毎日発生するデータクレンジング作業を自動化でき、手動操作の余計なミスやフリーズの心配もありません。
以下に、Excelにおける2つの行削除アプローチのメリットと注意点を整理しました。
| 削除の手法 | マクロ知識 | 作業スピード | 動作の安定性(重さ) | 実務での推奨シーン |
|---|---|---|---|---|
| オートフィルター方式 | 不要 | 早い(数十秒で完了) | 非常に軽い(通常の並び替えや抽出のみ) | 単発の作業や、VBAが使えない環境(共有制限など)の場合 |
| VBAマクロ自動化方式 | 必要 | 早い(ボタンクリックで完結) | 軽い(大容量データもクレンジング可能) | 定期的に同じ形式のデータクレンジングを行う業務 |
作業の頻度やデータの重要度に合わせて使い分けることが、ミスなく仕事を素早く終えるコツです。次の章から、まずは誰でも今すぐ使えるフィルター機能による行削除の基本ステップを詳しく解説します!
【基本編】フィルター機能を使って特定の文字を含む行を絞り込んで削除する手順

最も手軽で、関数やプログラミングの知識がない人でも今すぐ実践できるのが、Excelの「オートフィルター」を使った一括削除方法です。操作手順を図解します。
ステップ1:データ範囲にフィルターを設定する
まず、対象となるデータが入っている表の任意のセルを選択します。次に、リボンの「データ」タブ > 「フィルター」ボタンをクリックします(ショートカットキー Ctrl + Shift + L でも切り替え可能です)。
表の見出し行(1行目)の各セルに、下向きの三角ボタン(▼マーク)が表示されたことを確認してください。
ステップ2:テキストフィルターで特定の文字列を絞り込む
削除したい文字が含まれている列の見出しにある▼マークをクリックします。
表示されたメニューから「テキストフィルター」 > 「指定の値を含む…」を選択します。
カスタムフィルターのダイアログが開きますので、入力欄に削除対象としたい文字列(例: 「キャンセル」や「未定」など)を入力し、「OK」をクリックします。
ステップ3:抽出された対象行を選択して削除する
条件に一致する行だけがシート上に抽出され、行番号が青色に変化している状態になります。
見出し行のすぐ下のデータ行(例: 2行目が抽出されているならその行)の行番号から、一番下の抽出データ行までの行全体をドラッグして全選択します。
選択した行番号の上で右クリックし、メニューから「行の削除」を選択します(ショートカットキー Ctrl + - (コントロールとマイナス)でも行削除できます)。
ステップ4:フィルターをクリアして確認する
行を削除すると画面が一時的に真っ白(見出しのみ)になりますが、焦る必要はありません。
もう一度「データ」タブの「クリア」ボタンをクリックする(または Ctrl + Shift + L でフィルター自体をオフにする)と、条件に一致しなかった必要な行だけが綺麗に残ったデータ表に戻ります。
【応用編】VBAマクロを使って特定の文字を含む行を高速で一括削除する

「毎日ダウンロードする注文履歴データから、特定の不要データをボタン一つで消し去りたい」というような業務には、VBAマクロによる自動クレンジングが効率的です。動作手順とコードを解説します。
特定の文字を含む行を削除するVBAサンプルコード
以下のマクロは、アクティブなシートのA列を上から下までスキャンし、指定したキーワード(例: 「テスト」)を含む行をすべて一括で削除します。
Sub DeleteRowsContainingText()
Dim ws As Worksheet
Dim lastRow As Long
Dim i As Long
Dim targetText As String
Set ws = ActiveSheet
' ■ 削除したい条件文字列を指定します
targetText = "テスト"
' A列の最終行番号を取得
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
' 画面更新と自動計算を一時停止して処理を高速化
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
' ★ 最終行から「上に向かって」逆順でループ処理を行います(ここが最重要!)
For i = lastRow To 2 Step -1
' セル内に targetText が含まれているか(部分一致)を判定
If InStr(ws.Cells(i, "A").Value, targetText) > 0 Then
ws.Rows(i).Delete
End If
Next i
' 設定を元に戻す
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
MsgBox "特定の文字を含む行の削除が完了しました!", vbInformation
End Sub
VBA行削除で「逆順ループ(Step -1)」を必ず使うべき理由
マクロで行削除を記述する際、初心者ほど For i = 2 To lastRow と上から下に向かって順番にループを書いてしまいがちです。しかし、実は上からのループで行削除を行うと、一部の行が削除されずに飛ばされてしまうバグが発生します。
例えば、3行目と4行目がどちらも削除対象だったとします。マクロが3行目を削除すると、下にあった4行目が自動的に繰り上がって「新しい3行目」になります。
しかし、ループのカウンタ(i)は「次は4行目」と進んでしまうため、繰り上がってきたデータがスキャンされず、処理をすり抜けて残ってしまうのです。
これを防ぐために、行削除では必ず Step -1 を指定し、「表の一番下から上に向かって」逆方向にスキャンしていく設計にします。これが、行ズレによる処理漏れを防ぐための必須の鉄則です。
💡 あなたはどっちのタイプ?解決方法の選び方
自分でエクセルのスキルを高め、今後の業務効率を根本から改善したい方にはUdemyのベストセラー動画講座が非常におすすめです。
一方で、
「複雑なマクロや数式を今すぐ作ってほしい」「エラーが解決できず業務が進まない」という場合は、ココナラで得意なプロに数千円で作成代行をお願いするのも賢い選択ですよ。
★ 一生モノの業務効率化スキルが手に入る(30日間返金保証付き)
このような各種機能やショートカットキーを使いこなせるようになれば、日々のルーティンワークはスムーズに進むようになりますよ。
操作手順を一度覚えてしまえば、マウスとキーボードの往復にかかる無駄な時間をカットでき、より効率的に仕事をこなすことができますね。
基本スキルを磨いて自力でどんどん作業を効率化させたい方は、実践的な操作方法を映像で体系的に学べるUdemyの仕事効率化講座をのぞいてみるのが非常におすすめです。
一方で、「複雑なマクロや関数が組み合わさった社内ツールを丸ごと綺麗に構築し直してほしい」「自分では手が出せない自動化システムを作ってほしい」という場面もあるでしょう。
そのように自力で解決するには時間がかかりすぎる専門的なカスタマイズは、ココナラでエクセルやAIプロンプト開発のプロに設定や構築を代行してもらうのが賢い選択ですよ。
自分で学ぶべき基本スキルは動画で効率よく習得しつつ、専門性の高い開発は外部の頼れるプロにアウトソーシングしてしまえば、無駄な残業時間を減らして定時に気持ちよく退社できますね。
★ 会員登録無料!数千円からエクセル・GAS開発代行をプロに依頼可能
【要注意】アップデートによる最新仕様の落とし穴

近年、チャットツールやAIサービス、表計算ソフトなど多くのSaaSツールにおいて、高頻度でUI(ユーザーインターフェース)や内部仕様のアップデートが実施されています。
これにより、「昨日まで使えていた設定メニューの位置が変わった」「ショートカットキーの挙動が突然変化した」といったトラブルが非常に多く報告されており、公式ヘルプの更新が追いついていないケースも少なくありません。
特にWebブラウザ版やスマホアプリ版では、キャッシュデータの蓄積が原因で古いバージョンの画面と新しい挙動が混在し、「保存ボタンが押せない」「設定が反映されない」といった不具合(バグ)を引き起こすことがよくあります。
このような原因不明の不具合に遭遇した場合は、アプリの再起動や端末の再起動だけでなく、ブラウザのシークレットウィンドウ(プライベートブラウズ)での動作確認や、キャッシュ(一時データ)の完全削除を行うことで、多くの場合解決可能です。最新の仕様については公式サイトも併せてご確認ください。
Excelの特定の文字を含む行削除に関するFAQ

Excelでの特定文字列を含む行の削除操作に関して、実務でよくある疑問やトラブルシューティングをQ&A形式でまとめました。
Q1:行削除マクロを実行した後、元に戻す(Ctrl + Z)ことはできますか?
いいえ、マクロ(VBA)によって実行された処理は、Excelの「元に戻す」ボタンやショートカットキー Ctrl + Z で取り消すことができません。
マクロを実行すると、シートの状態がメモリ上で直接書き換えられてしまうためです。
万が一の誤操作に備えて、マクロを実行する前に必ずファイルを一度上書き保存しておくか、元データのバックアップシートを複製した上で処理を実行するように習慣づけましょう。
Q2:特定の文字が「含まれない」行を削除することはできますか?
はい、フィルター・VBAのいずれでも簡単に対応可能です。
オートフィルターを使う場合は、テキストフィルターの条件指定で「指定の値を含まない」を選択して絞り込み、同様に削除を行います。
VBAを使う場合は、条件判定の記述を InStr(...) = 0 に変更します(InStrの結果が0=含まれていない状態)。
If InStr(ws.Cells(i, "A").Value, targetText) = 0 Then
ws.Rows(i).Delete
End If
Q3:複数の異なる条件(例:「キャンセル」または「返品」)をOR条件で同時に削除できますか?
はい、フィルター機能の「カスタムフィルター」や、VBAの「Or演算子」を使用することで一括削除が可能です。
フィルターの場合は、抽出条件の設定で「または」にチェックを入れて2つ目の文字列を指定します。
VBAの場合は、条件分岐部分を以下のように Or で繋いで記述します。
If InStr(ws.Cells(i, "A").Value, "キャンセル") > 0 Or InStr(ws.Cells(i, "A").Value, "返品") > 0 Then
ws.Rows(i).Delete
End If
まとめ:特定の文字を含む行削除をマスターして業務効率化!

今回は、Excelで特定の文字を含む行を、フィルター機能を用いて手動で一括削除する手順と、VBAマクロを使って安全かつ高速に自動削除する応用手順を解説しました。
ポイントをおさらいしておきましょう。
文字列を含む行の削除処理を正しくマスターしておくだけで、システムからエクスポートした生のデータを手作業で整理する不毛な時間を一掃できます。ご自身の業務のデータ量や頻度に合わせて、最適なやり方を試してみてくださいね。
データ処理の時間を最小化して、余計な残業を撲滅し、今日もすっきり定時に退社しましょう!
KYOからのメッセージ:
「膨大なデータの中から必要なデータを探したり、一行ずつ手作業で整理していく作業って、本当に目が疲れますし時間がもったいないですよね。
今回紹介したExcelで特定の文字を含む行を一括削除を活用するだけで、何時間もかかるはずだった作業を大きく削減できますよ。
面倒な単純作業を賢く自動化・仕組み化して、あなたの自由な時間や大切なプライベートの時間をたっぷり確保しましょうね!」。