Excelで大量データを管理・分析する際、オートフィルター機能は非常に便利ですが、複数シートでフィルターをかけている場合や複数条件で絞り込みを行った場合に「解除漏れ」が発生し、次の作業に影響してしまうことがあります。
このようなトラブルを防ぐためには、VBAで「フィルター解除を全て実行する方法」をマスターすることが重要です。
本記事では、
✅ フィルター解除の基本構文
✅ フィルター解除とフィルターボタン解除の違い
✅ 全シートのフィルターを一括解除する方法
✅ 実務活用例とトラブル回避策
✅ フィルター解除後に再設定する場合の注意点
まで、初心者にもわかりやすく具体例つきで徹底解説します。
目次
- ✅ VBAでフィルター解除する基本
- (1) 絞り込み解除(フィルターボタンは残す)
- (2) フィルター設定自体を解除(フィルターボタンも非表示化)
- ✅ 「全てのフィルターを解除する」とは?
- ✅ 全シートのフィルターを一括解除する方法(実用サンプル)
- ✅ 全フィルター解除後に再度フィルターをかける場合
- ・ 再フィルター設定例:
- ■ よくあるトラブルと対策
- ・ .ShowAllData 実行時のエラー 1004
- ・ .AutoFilterMode の使い方ミス
- ・ 解除できていない列が残る
- ■ 全てのフィルター解除を自動化するメリット
- ■ 実務活用例:売上データ前処理で全フィルター解除
- ■まとめ:フィルター解除の全自動化でExcel業務を安定・効率化
✅ VBAでフィルター解除する基本
Excel VBAでフィルター解除を行う際は以下の2種類の解除方法が基本となります。
(1) 絞り込み解除(フィルターボタンは残す)
If ActiveSheet.FilterMode Then
ActiveSheet.ShowAllData
End If
✅ 絞り込みを解除し、全データを表示状態に戻す
✅ フィルターボタンはシート上に残るため、その後別条件でフィルター設定が可能
(2) フィルター設定自体を解除(フィルターボタンも非表示化)
If ActiveSheet.AutoFilterMode Then
ActiveSheet.AutoFilterMode = False
End If
✅ フィルター機能自体を無効化
✅ フィルターボタン(▼)も消え、完全にフィルター機能が解除される
【VBA】オートフィルターを解除する方法を徹底解説|トラブル防止と業務効率化
✅ 「全てのフィルターを解除する」とは?
「フィルター解除 全て」の具体的な意味は以下の2パターンに分類されます。
✅ 現在表示されている全データのフィルタリング(絞り込み)を解除する(ShowAllData)
✅ ワークブック内の全シートからフィルター機能そのものを解除する(AutoFilterMode=False)
日常業務では「すべてのフィルターを解除したい」と思った時にこの2つを組み合わせて処理することで、解除漏れ・不具合を防ぎ、次の処理で誤作動を回避できます。
✅ 全シートのフィルターを一括解除する方法(実用サンプル)
以下のコードで全てのシートのフィルター解除(絞り込み解除+フィルターボタン削除)を完全に実行可能です。
Sub ClearAllFiltersInWorkbook()
Dim ws As Worksheet
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
For Each ws In ThisWorkbook.Worksheets
With ws
' 絞り込み解除
If .FilterMode Then
On Error Resume Next
.ShowAllData
On Error GoTo 0
End If
' フィルター設定解除
If .AutoFilterMode Then
.AutoFilterMode = False
End If
End With
Next ws
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
このマクロのポイント:
✅ 全シートループ処理で解除漏れを完全に防止
✅ .ShowAllData はフィルター絞り込みがない状態で実行するとエラーになるため On Error Resume Next で回避
✅ 計算処理・画面更新を一時停止し、高速処理を実現
✅ 終了時に自動計算・画面更新を戻し安全運用
【VBA】オートフィルターに複数条件を設定する方法|業務効率を劇的に上げるフィルター自動化
✅ 全フィルター解除後に再度フィルターをかける場合
データ更新・加工のために一度フィルターを全解除した後、再びフィルターを設定して絞り込みたいケースは多いです。
安全な流れ:
1️⃣ フィルター解除(全解除マクロ実行)
2️⃣ データ加工・更新処理
3️⃣ 必要な条件で再度フィルター設定
この流れで作業を行うことで、解除漏れによる処理対象の不足やエラーを回避可能です。
・ 再フィルター設定例:
B列に「営業部」、C列に「2025年7月」のデータを再度絞り込みたい場合:
Sub ReFilterAfterClear()
Dim ws As Worksheet
Set ws = Worksheets("売上データ")
With ws
If .AutoFilterMode = False Then
.Range("A1").AutoFilter
End If
' B列:営業部
.Range("A1").AutoFilter Field:=2, Criteria1:="営業部"
' C列:2025年7月
.Range("A1").AutoFilter Field:=3, Criteria1:=">=2025/07/01", Operator:=xlAnd, Criteria2:="<=2025/07/31"
End With
End Sub
【VBA】オートフィルターを「設定のみ」行う方法を徹底解説|解除しないで条件だけ変更・適用
■ よくあるトラブルと対策
・ .ShowAllData 実行時のエラー 1004
フィルターがかかっていない状態で .ShowAllData を実行すると「エラー 1004」が発生します。
✅ If .FilterMode Then で事前に絞り込み有無を確認することで防止可能。
・ .AutoFilterMode の使い方ミス
.AutoFilterMode = Falseはフィルターボタンを削除し、フィルター機能を完全解除する- 再設定する際は再度
.Range("A1").AutoFilterを実行する必要がある
✅ 「解除後に再設定する場合は必ず再度フィルター設定を行う」ことを徹底する。
【VBA】フィルターをかける方法を徹底解説|実務で使える自動化テクニックとトラブル防止策
・ 解除できていない列が残る
手動操作で部分的に解除していると、シート上のフィルターボタンや他列条件が残る場合があります。
✅ 解除マクロで全列・全シートを一括解除し、状態をリセットしてから次の作業に移ることが重要です。
■ 全てのフィルター解除を自動化するメリット
✅ 解除漏れがなくなる
✅ 処理の安定性が向上
✅ 毎回のフィルター解除作業が不要になるため時短化
✅ 複雑なデータ加工・抽出作業のミス削減
フィルター解除を徹底管理できるようになるだけでExcel作業の品質とスピードが飛躍的に向上します。
■ 実務活用例:売上データ前処理で全フィルター解除
複数担当者が共有ファイルを触っており、誰かがフィルターをかけた状態で残してしまう場合、集計・分析時に不具合が発生します。
以下のようにWorkbookオープン時に全フィルター解除を自動化しておくと安心です。
Private Sub Workbook_Open()
Call ClearAllFiltersInWorkbook
End Sub
✅ ファイルを開いた瞬間にすべてのフィルターが解除されるため、不要な絞り込み残りを防止。
■まとめ:フィルター解除の全自動化でExcel業務を安定・効率化
✅ VBAでフィルター解除するには
・.ShowAllData(絞り込み解除)
・.AutoFilterMode = False(フィルター機能解除)
を理解し、目的に応じて使い分ける。
✅ 全シート・全列のフィルター解除にはループ処理を用いたマクロで対応。
✅ フィルター解除後に再フィルターをかける場合は解除→加工→再設定の流れを守る。
✅ トラブル防止のために FilterMode・AutoFilterMode のチェックを徹底する。
✅ 全てのフィルター解除を自動化することで時短・ミス削減・業務効率化を実現できる。