VBAで自動化 VBA一覧 フィルタリング 抽出・検索処理

【VBA】フィルター解除を全て実行する方法|複数シート・複数フィルター対応の完全自動化解説

Excelで大量データを管理・分析する際、オートフィルター機能は非常に便利ですが、複数シートでフィルターをかけている場合や複数条件で絞り込みを行った場合に「解除漏れ」が発生し、次の作業に影響してしまうことがあります。

このようなトラブルを防ぐためには、VBAで「フィルター解除を全て実行する方法」をマスターすることが重要です。

本記事では、

✅ フィルター解除の基本構文
✅ フィルター解除とフィルターボタン解除の違い
✅ 全シートのフィルターを一括解除する方法
✅ 実務活用例とトラブル回避策
✅ フィルター解除後に再設定する場合の注意点

まで、初心者にもわかりやすく具体例つきで徹底解説します。


✅ 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(フィルター機能解除)
を理解し、目的に応じて使い分ける。

✅ 全シート・全列のフィルター解除にはループ処理を用いたマクロで対応。

✅ フィルター解除後に再フィルターをかける場合は解除→加工→再設定の流れを守る。

✅ トラブル防止のために FilterModeAutoFilterMode のチェックを徹底する。

✅ 全てのフィルター解除を自動化することで時短・ミス削減・業務効率化を実現できる。

    -VBAで自動化, VBA一覧, フィルタリング, 抽出・検索処理