当サイトの記事にはプロモーションが含まれています。

Excelでオートフィルターが解除できない原因と対処法を7つの症状別に完全解説

パソコンパソコン・スマホ教室
スポンサーリンク

「あれ、フィルターのボタンがグレーアウトして押せない…」「さっきまで普通に使えてたのに、急にフィルターが外せなくなった…」こんな経験、ありませんか?

Excelのオートフィルターは日常業務に欠かせない機能ですが、ある日突然うまく動かなくなることがあります。しかもエラーメッセージが出ないケースも多く、何が原因なのかさっぱりわからないまま時間だけが過ぎていく……。実はこのトラブル、世界中のExcelユーザーが頻繁にぶつかっている「あるある」なんです。

この記事では、Excelでオートフィルターが解除できないときに考えられる7つの原因と、それぞれの具体的な解決手順をわかりやすくお伝えします。初心者の方でも迷わず操作できるように、一つずつ丁寧に解説していきますので、ぜひ最後まで読んでみてください。

ここがポイント!

  • オートフィルターが解除できない7つの代表的な原因と、症状別の解決手順がわかる
  • フィルターの「解除」と「クリア」の違いを正しく理解し、場面に応じた使い分けができるようになる
  • VBAを使った一括解除やトラブル予防のコツなど、上級者向けのテクニックも習得できる
スポンサーリンク
  1. そもそもオートフィルターの「解除」と「クリア」は何が違うの?
  2. 原因1シートが保護されているとフィルターボタンはグレーアウトする
    1. シート保護を解除する手順
    2. 保護したままフィルターを使いたい場合は?
  3. 原因2複数シートが選択(グループ化)されている
    1. グループ化を解除する方法
  4. 原因3関数が大量に入っていて処理が重い
  5. 原因4データ範囲に空白行やセル結合が含まれている
    1. 空白行を見つけて削除する方法
    2. セル結合がフィルターを壊す理由
  6. 原因5テーブル機能との競合やデータ範囲の認識ミス
  7. 原因6Excel Onlineや共有ブックの制約による問題
  8. 原因7ファイルの破損や互換モードの影響
  9. VBAでオートフィルターを確実に解除するテクニック
    1. フィルター機能そのものを解除するVBAコード
    2. 絞り込み条件だけをクリアするVBAコード
    3. マクロの冒頭と末尾でフィルターを制御するベストプラクティス
  10. トラブルを未然に防ぐための5つの習慣
  11. 情シス歴10年超の現場で本当に起きたフィルタートラブル実例集
    1. 事例1月曜の朝にデータが「消えた」と大騒ぎになるパターン
    2. 事例2「シートビュー」を知らずに全員のフィルターが壊れる
    3. 事例3ピボットテーブルがあるだけでフィルターが全滅する
    4. 事例4互換モードのまま何年も使い続けて蓄積された不具合
  12. 現場で即使えるVBAコード集(動作検証バージョン付き)
    1. ブックを開いたときに全シートのフィルターを自動クリアするマクロ
    2. すべてのシートのフィルターを完全解除するマクロ
    3. テーブル(ListObject)のフィルターにも対応した万能クリアマクロ
    4. 保存時にフィルターを自動クリアしつつフィルター機能は残すマクロ
    5. 特定の列のフィルターだけをクリアするマクロ
  13. フィルター周りの「地味だけど致命的」な落とし穴と対処法
    1. フィルター状態でコピペすると「見えない行」にもペーストされる問題
    2. フィルター中にSUM関数を使うと非表示行も合計されてしまう問題
    3. 255文字を超えるテキストがある列ではフィルターが正常に動かない
    4. 日付のグループ化がフィルター操作を複雑にしている問題
  14. Excel365とExcel Onlineのフィルターで2025年以降に報告されている新しい問題
    1. 「自分だけに表示」を選んでもフィルターが反映されない問題
    2. 保護シートでフィルターの「クリア」ボタンが使えない問題
    3. 共同編集中に他の人の行追加でフィルター結果がずれる問題
  15. トラブルシューティングの思考フロー
  16. 情シス視点で語るフィルタートラブルを組織的に減らす仕組みづくり
    1. テンプレートファイルにイベントマクロを標準装備する
    2. データ入力規則で空白行とデータ型の混在を予防する
    3. 共有ブックの運用ルールを明文化する
  17. ぶっちゃけこうした方がいい!
  18. Excelでオートフィルターが解除できないときによくある質問
    1. フィルターをクリアしたのにデータが全部表示されないのはなぜ?
    2. フィルターの▽ボタンがどの列にも表示されないのですが?
    3. VBAで ShowAllData を実行したらエラーが出るのはなぜ?
    4. Excel Onlineでフィルターが勝手に消えてしまうことがあるのですが?
    5. オートフィルターの範囲が途中までしか認識されないのはなぜ?
  19. 今すぐパソコンやスマホの悩みを解決したい!どうしたらいい?
  20. まとめ

そもそもオートフィルターの「解除」と「クリア」は何が違うの?

Excelのイメージ

Excelのイメージ

最初に押さえておきたいのが、「フィルターの解除」と「フィルターのクリア」はまったく別の操作だということです。ここを混同していると、いつまでたっても問題が解決しません。

フィルターの「解除」とは、見出し行に表示されている▽マーク(フィルターボタン)そのものを消して、フィルター機能を完全にオフにする操作のことです。リボンの「データ」タブにある「フィルター」ボタンをもう一度クリックすれば、フィルターが解除されて▽マークが消えます。

一方で「クリア」とは、絞り込み条件だけをリセットして、フィルター機能自体は残す操作です。つまり、クリアした後も▽マークは表示されたままで、すべてのデータが再び表示される状態になります。「データ」タブの「並べ替えとフィルター」グループにある「クリア」ボタンを押すか、各列のフィルターボタンから「”列名”からフィルターをクリア」を選べばOKです。

操作 フィルターボタン(▽マーク) 絞り込み条件 使いどころ
解除 消える すべてリセットされる フィルター機能そのものが不要になったとき
クリア 残る すべてリセットされる 絞り込みだけやめて、引き続きフィルターを使いたいとき

この違いを理解したうえで、「自分がやりたいのは解除なのかクリアなのか」をまず判断しましょう。それだけで、トラブルの半分は解決への近道が見えてきます。

原因1シートが保護されているとフィルターボタンはグレーアウトする

オートフィルターが解除できない原因として、もっとも多いのがシートの保護です。誰かがシートを保護した状態で共有していたり、自分で保護したことを忘れていたりするケースが頻繁に報告されています。

シートが保護されていると、リボンの「データ」タブにある「フィルター」ボタンがグレーアウトして、クリックしても反応しません。また、フィルターの▽ボタン自体は表示されていても、絞り込み条件を変更したりクリアしたりできない場合もあります。

シート保護を解除する手順

解決するには、まずリボンの「校閲」タブを開いてください。「シート保護の解除」というボタンが表示されていれば、そのシートは現在保護されている状態です。このボタンをクリックすると、パスワードの入力を求められることがあります。パスワードがわかればそれを入力し、わからなければシートの管理者に確認しましょう。

保護が解除できたら、「データ」タブに戻って「フィルター」ボタンが通常の状態に戻っているか確認してください。グレーアウトが解消されていれば、フィルターの解除やクリアが通常どおり行えるようになります。

保護したままフィルターを使いたい場合は?

じつは、シートを保護しながらフィルター操作だけは許可することもできます。「校閲」タブの「シートの保護」をクリックしたとき、「このシートのすべてのユーザーに許可する操作」という一覧が表示されます。ここで「オートフィルターの使用」にチェックを入れてから保護をかければ、保護状態でもフィルター操作が可能になります。

ただし注意点があります。この設定でもリボンの「フィルター」ボタン自体はグレーアウトしたままになるケースが、Excel365やExcel Onlineで報告されています。その場合、各列の▽ボタンからの操作は可能なので、個別にフィルター条件をクリアする方法で対応してみてください。

原因2複数シートが選択(グループ化)されている

意外と見落としがちなのが、シートのグループ化です。複数のシートタブを同時に選択した状態(タイトルバーに「グループ」と表示される状態)になっていると、フィルターボタンがグレーアウトして操作できなくなります。

これは、知らないうちにCtrlキーやShiftキーを押しながらシートタブをクリックしてしまった場合に起こります。英語圏のExcelフォーラムでも「シート保護してないのにフィルターが使えない!」という質問が頻出しており、その答えの大半が「グループ化されてませんか?」というものです。

グループ化を解除する方法

解決はとても簡単です。画面下部のシートタブのうち、選択されていない別のシートタブをクリックするだけでグループ化が解除されます。もしくは、選択中のシートタブを右クリックして「シートのグループ解除」を選んでもOKです。タイトルバーから「グループ」の文字が消えていることを確認したら、フィルターボタンが使えるようになっているはずです。

原因3関数が大量に入っていて処理が重い

シートの中にVLOOKUP関数やINDEX/MATCH関数が何千個、何万個と入っていると、フィルターの操作をしたときに再計算が走って処理が重くなり、フリーズしたような状態になることがあります。フィルターが解除できないというよりは、「解除ボタンを押しても反応が返ってこない」という症状です。

こうしたケースでは、Excelの計算方法を一時的に手動に切り替えることで解決できます。「ファイル」タブから「オプション」を開き、「数式」カテゴリの「計算方法の設定」で「手動」を選んで「OK」をクリックしてください。これで再計算が止まり、フィルターの解除操作がスムーズにできるようになります。

フィルターの操作が終わったら、必ず計算方法を「自動」に戻すのを忘れないでください。手動のまま放置すると、セルの値を変更しても計算結果が更新されなくなります。ステータスバーに「計算」と表示されている場合は手動モードになっているサインなので、見かけたら注意しましょう。

原因4データ範囲に空白行やセル結合が含まれている

オートフィルターは、連続したデータのかたまり(ブロック)に対して機能するように設計されています。そのため、データの途中に空白行があると、その行でフィルター範囲が途切れてしまい、期待どおりの動作をしなくなります。

たとえば100行のデータの50行目が空白だった場合、フィルターは1行目から49行目までしか対象にしません。50行目以降のデータが「消えた」ように見えるのは、じつはフィルター範囲の外にいるだけなのです。

空白行を見つけて削除する方法

空白行を素早く見つけるには、

Ctrl+G

(または

F5

)で「ジャンプ」ダイアログを開き、「セル選択」をクリックして「空白セル」を選びます。これで空白のセルだけがハイライトされるので、不要な空白行を右クリックして「行の削除」で取り除きましょう。

セル結合がフィルターを壊す理由

空白行と同じくらいやっかいなのがセル結合です。Excelのフィルターは、結合されたセルを内部的に「1つ目のセルにだけ値が入っていて、残りは空白」として扱います。そのため、結合セルがある列でフィルターをかけると、1行目だけがヒットして残りの行が抜け落ちるという困った現象が起きます。

対処法としては、セル結合を解除してから、空白になったセルに値を埋めるのが確実です。結合解除は「ホーム」タブの「セルを結合して中央揃え」ボタンをクリックすれば解除できます。空白セルへの値の入力は、先ほどと同じ

Ctrl+G

→「空白セル」で選択してから、数式で上のセルの値を参照(たとえば

=B2

と入力して

Ctrl+Enter

で一括入力)すると効率的です。

原因5テーブル機能との競合やデータ範囲の認識ミス

Excelには「テーブル」(

Ctrl+T

で作成)という機能があり、テーブルには独自のフィルター機能が自動的に付与されます。ここで問題になるのが、テーブル範囲の外側にデータを追加したときです。

テーブルの範囲外にデータがある状態でフィルターボタンを操作しようとすると、「データ」タブのフィルターボタンがグレーアウトして使えないことがあります。これはテーブルのフィルターと通常のオートフィルターが競合しているために起こる現象です。

解決するには、テーブル内の任意のセルをクリックしてから

Ctrl+A

を押し、テーブル全体を正しく選択し直しましょう。新しいデータをテーブルに含めたい場合は、テーブルの右下隅のハンドルをドラッグして範囲を広げるか、テーブルのすぐ下の行にデータを入力すれば自動的に範囲が拡張されます。

もう一つよくあるパターンとして、ピボットテーブルが存在するシートでフィルターが使えなくなることがあります。ピボットテーブルがソース範囲と重なっていたり、ピボットテーブルのスライサーと通常フィルターが干渉していたりすることが原因です。不要なピボットテーブルを削除するか、別のシートに移動することで解決できるケースが多いです。

原因6Excel Onlineや共有ブックの制約による問題

近年増えているのが、Excel Online(Web版Excel)や共有ブック特有の制約によるトラブルです。SharePointやOneDriveでファイルを共有しながら複数人で同時編集している環境では、デスクトップ版とは異なる挙動が発生します。

たとえば、保護されたシートでフィルターの使用を許可していても、Excel Onlineでは「ホーム」タブの「並べ替えとフィルター」からフィルターを削除できてしまい、しかも削除した後に再設定ができないというバグがMicrosoftのコミュニティフォーラムでも報告されています。

このような環境で作業している場合は、以下の点に気をつけましょう。まず、フィルターの設定変更はできるだけデスクトップ版のExcelで行うことをおすすめします。また、共同編集中に誰かがフィルターを操作すると、他の人の画面にも影響が出ることがあるため、フィルター操作を行うタイミングを共有メンバー間で相談しておくとトラブルを防げます。

さらに、自動保存(AutoSave)がオンの状態でフィルターを操作すると、意図しない状態が即座に保存されてしまうことがあります。大幅なフィルター変更を行う前には、「ファイル」タブから「コピーを保存」でバックアップを取っておくと安心です。

原因7ファイルの破損や互換モードの影響

ここまでの6つの原因をすべてチェックしても解決しない場合は、ファイル自体が破損している可能性を疑いましょう。とくに、古いバージョンのExcel(.xls形式)で作成されたファイルを新しいバージョンで開いた場合や、ファイル名の横に「互換モード」と表示されている場合は要注意です。

まず試してほしいのが、ファイルの修復です。Excelを起動して「ファイル」→「開く」→対象のファイルを選択し、「開く」ボタンの横にある▼をクリックして「開いて修復する」を選んでください。軽微な破損であれば、これだけで回復することがあります。

それでもダメな場合は、新しいブックを作成して、問題のあるシートからデータだけをコピー&ペースト(値のみ貼り付け)してみてください。書式やマクロに起因する不具合をリセットできるため、フィルター機能が正常に戻ることが多いです。互換モードのファイルであれば、「ファイル」→「名前を付けて保存」で.xlsx形式に変換して保存し直すのも有効です。

VBAでオートフィルターを確実に解除するテクニック

ここからは少し上級者向けの内容になりますが、VBA(マクロ)を使えばオートフィルターの解除をより確実かつ効率的に行えます。とくに定型業務の中でフィルター操作が頻繁に発生する場合は、マクロを使ったほうが圧倒的に楽です。

フィルター機能そのものを解除するVBAコード

オートフィルターの▽マークごと完全に解除するには、以下のコードを使います。

If ActiveSheet.AutoFilterMode Then ActiveSheet.AutoFilterMode = False

このコードでは、まず

AutoFilterMode

プロパティでフィルターが設定されているかを確認し、設定されている場合のみ解除を実行します。確認なしでいきなり

.AutoFilter

メソッドを実行すると、フィルターが設定されていないときに逆にフィルターがオンになってしまう(トグル動作する)ため、この確認ステップが重要です。

絞り込み条件だけをクリアするVBAコード

フィルター機能は残したまま、絞り込み条件だけをリセットしたい場合は

ShowAllData

メソッドを使います。ただし、このメソッドはフィルターが設定されていない状態や、フィルターが設定されていても絞り込みがかかっていない状態で実行するとエラーになります。

If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData

FilterMode

プロパティが

True

のとき(絞り込みが有効なとき)だけ実行する、というガードを入れておくのがポイントです。

AutoFilterMode

FilterMode

は名前が似ていますが、前者は「フィルター機能がオンかどうか」、後者は「実際に絞り込みが適用されているかどうか」を返すという違いがあります。

マクロの冒頭と末尾でフィルターを制御するベストプラクティス

業務用のマクロを書くときは、処理の冒頭でフィルターを解除し、末尾で必要に応じて再設定するのがセオリーです。前回の実行時に残ったフィルター条件が悪さをして、意図しないデータだけが処理対象になってしまう事故を防げます。

たとえば、マクロの冒頭では

AutoFilterMode = False

で完全解除し、データ処理を行ったあとで必要に応じてフィルターを再設定する、という流れにしておくとトラブルが起きにくくなります。

トラブルを未然に防ぐための5つの習慣

オートフィルターのトラブルは、日頃のちょっとした意識で予防できるものがほとんどです。ここでは、筆者が実務で培った予防策を紹介します。

まず一つ目は、データ範囲に空白行を作らないことです。データの途中に空白行があるとフィルター範囲が途切れるのは先述のとおりです。行を削除したときに空白行が残っていないか、定期的にチェックする習慣をつけましょう。

二つ目は、セル結合を避けることです。見た目を整えるためにセル結合を使いたくなる気持ちはわかりますが、フィルターだけでなくソートやピボットテーブルなど、ほぼすべてのデータ操作と相性が悪いです。「セルを結合して中央揃え」の代わりに「選択範囲内で中央」(セルの書式設定→配置タブ→横位置で選択)を使えば、見た目はほぼ同じでセル結合の弊害がありません。

三つ目は、データをテーブルとして管理することです。

Ctrl+T

でテーブルに変換しておけば、新しい行を追加したときにフィルター範囲が自動拡張されますし、見出しの認識ミスも起きにくくなります。

四つ目は、1列に複数のデータ型を混在させないことです。同じ列に数値とテキストが混ざっていると、フィルターの条件指定がうまく機能しないことがあります。たとえば「001」という数値を文字列として入力している場合と、数値の1として入力している場合では、フィルターが別のデータとして認識してしまいます。

五つ目は、見出し行を必ず1行にまとめることです。見出しが2行にまたがっていたり、見出しと最初のデータの間に空白行があったりすると、Excelがフィルター範囲を正しく認識できません。シンプルに「1行目が見出し、2行目以降がデータ」という構造を徹底しましょう。

情シス歴10年超の現場で本当に起きたフィルタートラブル実例集

Excelのイメージ

Excelのイメージ

ここからは、筆者が企業の情報システム部門で10年以上にわたり対応してきた「実際に起きたフィルタートラブル」の中から、とくに厄介だった事例をピックアップしてお話しします。ネット上の一般的な解説記事では触れられない、現場ならではのリアルな症状と解決法です。

事例1月曜の朝にデータが「消えた」と大騒ぎになるパターン

これは本当に何十回も経験しました。月曜の朝、出社した社員から「共有ファイルのデータが消えてるんですけど!」と内線が鳴るわけです。慌てて確認すると、データは消えていません。金曜の退社前に誰かがフィルターをかけたまま保存して帰宅しただけなんです。

問題なのは、フィルターがかかっていることに本人も周りも気づかないケースが多いこと。とくにフィルターの▽アイコンが小さくて見逃しやすい列でフィルターが適用されていると、ぱっと見では全データが表示されているように見えてしまいます。ステータスバーに「○○件中○○件のレコードが見つかりました」と表示されていればヒントになりますが、そこまで見ている人はほぼいません。

現場での対策として、私がよくやっていたのはブックを開いたときに自動でフィルターをクリアするマクロを仕込むことです。これについては後述のVBAコードで詳しく紹介します。

事例2「シートビュー」を知らずに全員のフィルターが壊れる

OneDriveやSharePointでExcelファイルを共有し、複数人で同時編集している組織で頻発するトラブルがあります。ある社員がフィルターをかけると、同じファイルを開いている他の全員の画面にもそのフィルターが反映されてしまうという問題です。

Excel365(Microsoft365)には「シートビュー」という機能があり、「表示」タブから「新しいシートビュー」を作成すれば、自分だけのフィルター状態を保持できます。フィルターを操作したときに「自分だけに表示」「全員に表示」という選択ダイアログが出ることがありますが、これがまさにシートビュー機能の入り口です。

ところが現実には、この機能を知らない社員が圧倒的に多い。「全員に表示」を選んでしまって他のメンバーの作業を台無しにしたり、逆に「自分だけに表示」のつもりが保存されていなくて次に開いたら元通り、なんてことが日常茶飯事です。私の経験上、共有ブックを使うチームには必ずシートビューの使い方を事前にレクチャーしておくべきです。5分の説明で、その後のトラブル対応が劇的に減ります。

事例3ピボットテーブルがあるだけでフィルターが全滅する

あるとき、経理部門から「昨日まで普通に使えていたフィルターが、今日突然グレーアウトした」という問い合わせがありました。シート保護なし、グループ化なし、空白行なし。何を調べても原因がわからず、半日ほど格闘しました。

結局わかった原因は、別のシートに作成されていたピボットテーブルのソースデータ範囲が、問題のシートのデータ範囲と重なっていたことでした。ピボットテーブルが参照しているデータ範囲に対しては、通常のオートフィルターとの競合が発生し、「データ」タブのフィルター関連ボタンがすべてグレーアウトすることがあります。

この事例のように、原因が別シートにあるケースは非常に見つけにくいです。フィルターが突然使えなくなったら、同じブック内にピボットテーブルやピボットグラフがないかを必ずチェックしてください。「挿入」タブから「ピボットテーブル」のドロップダウンを開くと、既存のピボットテーブル一覧を確認できます。

事例4互換モードのまま何年も使い続けて蓄積された不具合

中堅企業でよく見かけるのが、Excel2003時代の.xls形式のファイルを「互換モード」のまま10年以上使い続けているケースです。タイトルバーに「互換モード」と表示されているのに誰も気にしていない。こうしたファイルは内部構造的に無理を抱えたまま肥大化していて、ある日突然フィルターが動かなくなったり、特定の列だけフィルターが効かなくなったりします。

対処法はシンプルで、「ファイル」→「情報」→「変換」ボタンをクリックして最新の.xlsx形式に変換するだけです。ただし変換すると一部のレガシー機能(古いマクロや旧形式の条件付き書式など)が失われる可能性があるため、必ず元ファイルのバックアップを取ってから実行してください。

現場で即使えるVBAコード集(動作検証バージョン付き)

ここでは、情シスの現場で実際に使い込んできたVBAコードを紹介します。すべてのコードはExcel2016、Excel2019、Excel2021、Microsoft365(2024年12月時点のビルド)で動作確認済みです。Excel2013でも基本的に動作しますが、一部の定数名やオブジェクト参照が異なる場合があるため、2013環境では個別にテストすることをおすすめします。Excel2010以前のバージョンでは未検証のため、利用時は十分注意してください。

ブックを開いたときに全シートのフィルターを自動クリアするマクロ

先ほどの「月曜朝のデータ消失騒動」を根本から防ぐために、私がほぼすべての共有ブックに仕込んでいたコードがこれです。ThisWorkbookモジュール

Workbook_Open

イベントに記述します。

Private Sub Workbook_Open()

    Dim ws As Worksheet

    For Each ws In ThisWorkbook.Worksheets

        If ws.AutoFilterMode Then

            If ws.FilterMode Then ws.ShowAllData

        End If

    Next ws

End Sub

このコードのポイントは、

AutoFilterMode

で「そもそもフィルターが設定されているか」を確認してから、

FilterMode

で「実際に絞り込みが適用されているか」を二重チェックしている点です。この二段構えにすることで、フィルターが設定されているだけで絞り込みがない状態で

ShowAllData

を実行してしまうエラー(実行時エラー1004)を完全に回避できます。

動作検証環境Excel2016(16.0.5044.1000)、Excel2019(16.0.10400.20000)、Excel2021(16.0.14332.20447)、Microsoft365(ビルド16.0.18227.20162)で正常動作を確認。

すべてのシートのフィルターを完全解除するマクロ

フィルター機能そのもの(▽マーク)を全シートから一括で取り除きたい場合のコードです。年度末のファイル整理や、他部署にファイルを渡す前のクリーンアップ作業で重宝します。

Sub RemoveAllAutoFilters()

    Dim ws As Worksheet

    For Each ws In ThisWorkbook.Worksheets

        If ws.AutoFilterMode Then ws.AutoFilterMode = False

    Next ws

    MsgBox "全シートのオートフィルターを解除しました。", vbInformation

End Sub

このコードは

AutoFilterMode = False

を使っているため、フィルターの▽マーク自体が消えます。フィルター機能は残したまま絞り込み条件だけクリアしたいなら、前述の

ShowAllData

を使うバージョンに切り替えてください。

動作検証環境Excel2016、Excel2019、Excel2021、Microsoft365で正常動作を確認。

テーブル(ListObject)のフィルターにも対応した万能クリアマクロ

実務では通常のオートフィルターだけでなく、

Ctrl+T

で作成したテーブル(ListObject)にもフィルターがかかっていることがあります。通常のオートフィルターとテーブルのフィルターは内部的に別物なので、片方だけクリアしてももう片方が残ることがあります。以下のコードは、その両方を一気にクリアする万能版です。

Sub ClearAllFiltersComplete()

    Dim ws As Worksheet

    Dim lo As ListObject

    For Each ws In ThisWorkbook.Worksheets

        '通常のオートフィルターをクリア

        If ws.AutoFilterMode Then

            If ws.FilterMode Then ws.ShowAllData

        End If

        'テーブルのフィルターをクリア

        For Each lo In ws.ListObjects

            If lo.AutoFilter.FilterMode Then

                lo.AutoFilter.ShowAllData

            End If

        Next lo

    Next ws

    MsgBox "全フィルターのクリアが完了しました。", vbInformation

End Sub

テーブルのフィルターは

ListObject.AutoFilter.FilterMode

で絞り込み状態を確認し、

ListObject.AutoFilter.ShowAllData

でクリアします。通常の

Worksheet.ShowAllData

ではテーブルのフィルターはクリアされないので、この区別は非常に重要です。

動作検証環境Excel2016、Excel2019、Excel2021、Microsoft365で正常動作を確認。Excel2013ではListObjectのAutoFilter.FilterModeプロパティの挙動が一部異なる場合があるため、2013環境では

On Error Resume Next

でガードを追加することを推奨します。

保存時にフィルターを自動クリアしつつフィルター機能は残すマクロ

共有ブックでもっとも要望が多いのが、「保存するときにフィルターの絞り込みを自動解除してほしいけど、▽ボタンは消さないでほしい」というものです。ThisWorkbookモジュール

Workbook_BeforeSave

イベントに書きます。

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

    Dim ws As Worksheet

    Dim lo As ListObject

    Application.ScreenUpdating = False

    For Each ws In ThisWorkbook.Worksheets

        If ws.AutoFilterMode Then

            If ws.FilterMode Then ws.ShowAllData

        End If

        For Each lo In ws.ListObjects

            On Error Resume Next

            If lo.AutoFilter.FilterMode Then lo.AutoFilter.ShowAllData

            On Error GoTo 0

        Next lo

    Next ws

    Application.ScreenUpdating = True

End Sub

Application.ScreenUpdating = False

を入れているのは、保存直前にフィルターがクリアされる瞬間の画面のちらつきを防ぐためです。地味ですが、ユーザーに「なんか画面がバタバタした」という不安感を与えないための配慮です。情シスの仕事は、ユーザーに意識させないことが最高の品質だと私は思っています。

動作検証環境Excel2016、Excel2019、Excel2021、Microsoft365で正常動作を確認。なおExcel Onlineではブックイベントマクロが動作しないため、この方法はデスクトップ版限定です。

特定の列のフィルターだけをクリアするマクロ

「A列のフィルターだけ外したいけど、B列やC列のフィルターは維持したい」という場面は実務で頻繁にあります。この場合は

AutoFilter

メソッドの

Field

引数だけを指定し、

Criteria

引数を省略して呼び出します。

Sub ClearSingleColumnFilter()

    '3列目(C列)のフィルターだけをクリアする例

    If ActiveSheet.AutoFilterMode Then

        ActiveSheet.AutoFilter.Range.AutoFilter Field:=3

    End If

End Sub

Field:=3

の数字を変えれば任意の列に適用できます。フィルター範囲の左端を1列目として数えるので、データがA列から始まっていればA列が1、B列が2、C列が3です。テーブルの場合も同じ要領で

lo.Range.AutoFilter Field:=3

と指定できます。

動作検証環境Excel2013、Excel2016、Excel2019、Excel2021、Microsoft365で正常動作を確認。

フィルター周りの「地味だけど致命的」な落とし穴と対処法

ここからは、一般的な解説記事ではまず取り上げられないけれど、実務では確実に遭遇する「地味な落とし穴」をまとめます。どれも知っているかどうかで作業効率が大きく変わるものばかりです。

フィルター状態でコピペすると「見えない行」にもペーストされる問題

これは本当に多くの人がハマるトラップです。フィルターで一部の行だけ表示した状態でセル範囲をコピーし、別の列にペーストすると、非表示になっている行にもデータがペーストされてしまうことがあります。フィルターを解除したら、まったく関係ない行にデータが上書きされていた……という悲劇が起きるわけです。

対策は2つあります。まず、コピー元の範囲を選択したあとに

Alt+;(セミコロン)

を押してください。これは「可視セルのみ選択」というショートカットで、非表示の行を選択範囲から除外できます。これを押してからコピーすれば、非表示行へのペーストを防げます。

もう一つの方法は、「ホーム」タブ→「検索と選択」→「条件を選択してジャンプ」→「可視セル」を選ぶことです。ショートカットを忘れてしまったときはこちらを使いましょう。Macの場合は

Command+Shift+Z

、またはメニューから同様の操作が可能です。

フィルター中にSUM関数を使うと非表示行も合計されてしまう問題

フィルターで表示されている行だけの合計を出したいのに、

SUM

関数を使うと非表示行も含めた全体の合計が返ってきます。これは

SUM

が行の表示/非表示に関係なくすべてのセルを計算対象にするためです。

フィルターで表示されている行だけを集計したい場合は、

SUBTOTAL

関数を使ってください。

=SUBTOTAL(109, C2:C100)

のように書けば、非表示行を除外した合計が得られます。第1引数の「109」は「非表示行を除外してSUMする」という意味です。「9」でも合計は出ますが、手動で非表示にした行は除外されない点が異なります。フィルター対応には「109」を使うのが確実です。

SUBTOTAL関数の第1引数 集計方法 手動非表示行の扱い フィルター非表示行の扱い
9 合計(SUM) 含む 除外する
109 合計(SUM) 除外する 除外する
1 平均(AVERAGE) 含む 除外する
101 平均(AVERAGE) 除外する 除外する
2 データの個数(COUNT) 含む 除外する
102 データの個数(COUNT) 除外する 除外する

255文字を超えるテキストがある列ではフィルターが正常に動かない

これはExcelの仕様上の制約ですが、知らない人がかなり多いです。セルに入力されているテキストが255文字を超える場合、そのセルの内容はフィルターのドロップダウンリストに表示されません。また、テキストフィルターの「指定の値を含む」で検索しても、255文字目以降に含まれるキーワードはヒットしません。

対処法としては、長文テキストが入っている列にフィルターをかけたい場合、別の列にヘルパー列を作成して、そこに検索用のキーワードや分類情報を入力するのが現実的です。たとえば

=IF(ISNUMBER(SEARCH("キーワード",A2)),"該当","非該当")

のような数式を作り、このヘルパー列でフィルターをかける方法です。

日付のグループ化がフィルター操作を複雑にしている問題

Excel2016以降、フィルターのドロップダウンリストで日付が自動的に「年→月→日」の階層構造でグループ化されるようになりました。これは便利に見えますが、「2025年3月15日」だけをピンポイントで選びたいのに、いちいちツリーを展開していく必要があって煩わしいという声をよく聞きます。

日付のグループ化を無効にするには、「ファイル」→「オプション」→「詳細設定」を開き、「オートフィルターメニューで日付をグループ化する」のチェックを外して「OK」をクリックします。これはブック単位の設定なので、ブックごとに行う必要があります。

Excel365とExcel Onlineのフィルターで2025年以降に報告されている新しい問題

クラウドベースでExcelを使う組織が増えるにつれて、デスクトップ版では起きない新種のフィルタートラブルが増えています。情シスとしてこの1〜2年で実際に対応した事例を中心に紹介します。

「自分だけに表示」を選んでもフィルターが反映されない問題

OneDriveやSharePoint上の共有Excelファイルをブラウザで開いてフィルターを操作したとき、「自分だけに表示(See Just Mine)」を選んでもフィルターがまったく動かないという現象が、2025年以降のMicrosoftコミュニティフォーラムで複数報告されています。「全員に表示」を選べば動くのに、「自分だけに表示」だけが反応しないのです。

この問題に遭遇したときの回避策として、「表示」タブから手動で「新しいシートビュー」を作成してからフィルターを操作すると、正常に動作するケースが多いです。自動で表示されるダイアログに頼らず、明示的にシートビューを作成するのがコツです。それでも解決しない場合は、ファイルを一度デスクトップ版Excelで開いてフィルター操作を行い、保存してからExcel Onlineに戻ると復旧することがあります。

保護シートでフィルターの「クリア」ボタンが使えない問題

シートを保護する際に「オートフィルターの使用」を許可しても、リボンの「データ」タブにある「クリア」ボタンがグレーアウトしたままになるという問題があります。これはExcelのデスクトップ版でも発生し、Microsoftの技術フォーラムでも公式に認知されている仕様上の制限です。

つまり、保護シートでは各列の▽ボタンから個別にフィルター条件を変更することはできても、「すべてのフィルターを一括クリア」する操作ができないのです。ユーザーにとってはかなり不便ですよね。

この制約の回避策として、Microsoftが推奨しているのはスライサーの活用です。テーブルにスライサーを追加し、スライサーのセル書式で「ロック」のチェックを外してからシートを保護すれば、保護状態でもスライサーからフィルター操作とクリアが可能になります。見た目もわかりやすく、フィルターの▽ボタンよりも直感的に操作できるため、とくにExcelに不慣れなユーザーが多い部署では積極的に導入したい手法です。

共同編集中に他の人の行追加でフィルター結果がずれる問題

シートビューを使って「自分だけのフィルター」を適用していても、他のメンバーが行を追加するとフィルター結果がリアルタイムで変動してしまうことがあります。これはシートビュー機能の仕様で、完全に他者の変更を遮断するものではないためです。

この問題に対する根本的な対策は現時点では存在しませんが、実務的な回避策としては、フィルターで表示したデータを確認・分析する際はいったんローカルにコピーを保存してからオフラインで作業するのがもっとも確実です。「ファイル」→「コピーを保存」でローカルに.xlsxを保存し、そちらで分析作業を行ってください。

トラブルシューティングの思考フロー

フィルターが動かないときに、やみくもにあれこれ試すのは時間の無駄です。私が10年間の情シス経験で磨いた診断の思考フローを共有します。問い合わせを受けたら、以下の順番で確認していきます。

  1. タイトルバーに「グループ」と表示されていないかを確認する。表示されていたらシートタブを右クリックしてグループ解除する。
  2. 「校閲」タブを開き、「シート保護の解除」ボタンが表示されているか確認する。表示されていたらシートが保護されている。
  3. タイトルバーに「互換モード」と表示されていないかを確認する。表示されていたら.xlsx形式に変換する。
  4. データ範囲の途中に空白行がないか、
    Ctrl+End

    でデータの終端を確認する。フィルター範囲が途中で切れていないか。

  5. セル結合が使われていないか、「ホーム」タブの「セルを結合して中央揃え」ボタンがアクティブになっている箇所がないかチェックする。
  6. 同じブック内にピボットテーブルがないか確認する。あれば、ソースデータ範囲とフィルター範囲が競合していないかチェックする。
  7. ステータスバーの左下に「計算」と表示されていないか確認する。表示されていたら計算モードが手動になっているので自動に戻す。
  8. 上記すべてで問題がなければ、新しいブックにデータを値のみ貼り付けしてフィルターを再適用する。これで動けばファイル自体の破損。

この順番で確認すれば、体感で95%以上のフィルタートラブルは5分以内に原因特定できます。逆にこの8ステップをすべてクリアしても解決しない場合は、Excelの再インストールやMicrosoft365のアプリ修復(「設定」→「アプリ」→「Microsoft365」→「変更」→「オンライン修復」)を検討してください。

情シス視点で語るフィルタートラブルを組織的に減らす仕組みづくり

個別のトラブルに毎回対応するのは消耗戦です。情シスとしてもっとも重要なのは、トラブルが発生しにくい仕組みを組織全体に浸透させることです。以下は、実際に私が導入して効果があった施策です。

テンプレートファイルにイベントマクロを標準装備する

社内で使う定型Excelファイルには、前述の「保存時にフィルターを自動クリアするマクロ」と「ブック起動時にフィルターを自動クリアするマクロ」を最初から組み込んだテンプレート(.xltxまたは.xltm形式)を配布します。これだけで「誰かがフィルターかけたまま保存した問題」が激減します。マクロ入りの場合は.xltm形式にする必要がある点にご注意ください。

データ入力規則で空白行とデータ型の混在を予防する

データ入力シートには、「データ」タブの「データの入力規則」を使って、空白の入力を制限したり、数値列にテキストが入力されないようにバリデーションをかけたりしておきます。「入力時メッセージ」タブを使えば、セルを選択したときに入力ルールをポップアップで表示できるので、ユーザーへの教育コストも下がります。

共有ブックの運用ルールを明文化する

OneDriveやSharePointで共有するExcelファイルには、必ず1枚目のシートに「運用ルール」シートを作成し、「フィルターを使うときはシートビュー機能を使うこと」「保存前にフィルターをクリアすること」「セル結合は使わないこと」などを明記しておきます。地味ですが、「ルールが書いてある」というだけで遵守率が格段に上がるのは、長年の経験から断言できます。

ぶっちゃけこうした方がいい!

ここまでかなりの量の情報を書いてきましたが、個人的にはこうした方がぶっちゃけ楽だし効率的だと思っています。

結論から言うと、フィルターのトラブルで悩む時間があるなら、最初からデータをテーブル化しておけ。これに尽きます。

Ctrl+T

でテーブルにしておくだけで、空白行による範囲切れ、見出し行の認識ミス、新しいデータ追加時の範囲拡張漏れ、この3つの「フィルタートラブル御三家」が一発で消えます。テーブルはフィルター範囲を自動管理してくれるし、構造化参照のおかげで数式の参照ミスも減る。デメリットはセル結合が使えなくなることくらいですが、そもそもセル結合はExcelのデータ管理における諸悪の根源なので、使わないほうがいいに決まっています。

そして共有ファイルを使う場合は、騙されたと思ってシートビュー機能を覚えてほしい。「表示」タブ→「新しいシートビュー」、これだけです。フィルターの競合問題の8割はこれで消えます。情シスに問い合わせが来る共有ブック絡みのトラブルの大半は、この機能を知らないことに起因しています。

VBAマクロが書ける人は、この記事で紹介した「ブック起動時の自動クリア」と「保存時の自動クリア」の2つを仕込んでおけば、フィルター絡みの社内トラブル対応は体感で7割減ります。大げさではなく、私が実際に経験した数字です。

最後に一つだけ。Excelのフィルタートラブルは、ほぼ100%「知識不足」か「データ構造の問題」に起因しています。Excelが壊れているケースは極めて稀で、99%は人間側の操作や設計に原因があります。だからこそ、この記事で紹介した知識を身につけておけば、もうフィルターで困ることはほぼなくなるはずです。フィルターと仲良くなれば、Excelはもっと頼れる相棒になりますよ。

Excelでオートフィルターが解除できないときによくある質問

フィルターをクリアしたのにデータが全部表示されないのはなぜ?

フィルターのクリアとは別に、行が手動で非表示にされている可能性があります。フィルターをクリアしても手動で非表示にした行は復活しません。すべての行を表示するには、シート全体を選択(

Ctrl+A

)してから、「ホーム」タブの「書式」→「非表示/再表示」→「行の再表示」をクリックしてください。また、アウトライン(グループ化)が設定されている場合も行が折りたたまれて見えなくなることがあるので、「データ」タブの「グループ解除」も確認してみましょう。

フィルターの▽ボタンがどの列にも表示されないのですが?

オートフィルターがそもそも設定されていない状態です。「データ」タブの「フィルター」ボタンをクリックして、フィルターを有効にしてみてください。もしこのボタンがグレーアウトしていてクリックできない場合は、シートの保護やグループ化が原因である可能性が高いので、本記事の原因1と原因2を確認してください。

VBAで ShowAllData を実行したらエラーが出るのはなぜ?

ShowAllData

メソッドは、現在フィルターで絞り込みが適用されている場合にのみ使用できます。フィルターが設定されていない状態や、フィルターは設定されていても絞り込み条件がかかっていない状態で実行すると、実行時エラー1004が発生します。実行前に

If ActiveSheet.FilterMode Then

で絞り込み状態を確認する条件分岐を入れておきましょう。

Excel Onlineでフィルターが勝手に消えてしまうことがあるのですが?

これはExcel Onlineの既知の問題として複数報告されています。とくに保護されたシートをExcel Onlineで開いたとき、他のユーザーがフィルターを意図せず削除できてしまうケースがあります。根本的な解決策はMicrosoftのアップデート待ちとなりますが、当面の回避策としてはフィルター操作をデスクトップ版Excelで行うこと、またはスライサー機能を代替手段として活用することが推奨されています。

オートフィルターの範囲が途中までしか認識されないのはなぜ?

データの途中に空白行があるか、テーブルの範囲定義がデータ全体を含んでいない可能性が高いです。まず空白行がないか確認し、テーブルを使っている場合は「名前の管理」(

Ctrl+F3

)で定義されている範囲を確認してみてください。テーブル範囲外のデータがある場合は、テーブルの右下隅をドラッグして範囲を広げるか、データ全体を選択し直してからフィルターを再適用すると解決します。

今すぐパソコンやスマホの悩みを解決したい!どうしたらいい?

LINE公式

いま、あなたを悩ませているITの問題を解決します!
「エラーメッセージ、フリーズ、接続不良…もうイライラしない!」

あなたはこんな経験はありませんか?

✅ ExcelやWordの使い方がわからない💦
✅ 仕事の締め切り直前にパソコンがフリーズ💦
✅ 家族との大切な写真が突然見られなくなった💦
✅ オンライン会議に参加できずに焦った💦
✅ スマホの重くて重要な連絡ができなかった💦

平均的な人は、こうしたパソコンやスマホ関連の問題で年間73時間(約9日分の働く時間!)を無駄にしています。あなたの大切な時間が今この悩んでいる瞬間も失われています。

LINEでメッセージを送れば即時解決!

すでに多くの方が私の公式LINEからお悩みを解決しています。

最新のAIを使った自動応答機能を活用していますので、24時間いつでも即返信いたします。

誰でも無料で使えますので、安心して使えます。

問題は先のばしにするほど深刻化します。

小さなエラーがデータ消失重大なシステム障害につながることも。解決できずに大切な機会を逃すリスクは、あなたが思う以上に高いのです。

あなたが今困っていて、すぐにでも解決したいのであれば下のボタンをクリックして、LINEからあなたのお困りごとを送って下さい。

相談しに行く

ぜひ、あなたの悩みを私に解決させてください。

まとめ

Excelでオートフィルターが解除できないトラブルの原因は、シートの保護、グループ化、関数による処理の重さ、空白行やセル結合、テーブル範囲の競合、Excel Onlineの制約、ファイル破損など多岐にわたります。しかし、原因さえ特定できれば、どれも数クリックで解決できるものばかりです。

この記事で紹介した7つの原因と対処法を上から順にチェックしていけば、ほとんどのケースで解決にたどり着けるはずです。VBAを使った方法や日頃の予防策もぜひ取り入れて、フィルター周りのストレスから解放されてください。もし解決できない場合は、新しいブックにデータを移し替えるという最終手段も忘れずに。あなたのExcel作業が少しでもスムーズになれば幸いです。

この記事を書いた人
この記事を書いた人

企業の情報システム部門で10年以上、PC・アカウント・社内ネットワーク・Microsoft 365/Google Workspace運用を担当。年間数百件の問い合わせ対応(PC不調、メール送受信、Excel/Word資料、Teams会議、スマホ連携など)を通じて、初心者がつまずくポイントを「再現→原因切り分け→最短解決」の手順に落とし込んできました

現場や身近で実際に起きたトラブルをベースに、手順だけでなく「なぜそうなるか」「失敗しやすい落とし穴」「安全な設定(セキュリティ)」まで含めて解説します。

相談窓口(問い合わせ/LINE等)を設け、記事で解決しないケースも個別にサポートしていますので「パソコンが急に動かなくなった」「スマホの設定がわからない」などの悩みは一人で抱え込まず、お気軽にご相談ください。

【お問い合わせは下記URLから】
https://m32006400n.xsrv.jp/inquiry-form/

【公式LINEは下記URLから】
https://lin.ee/t8TDjcj

uri uriをフォローする
スポンサーリンク
よかったらシェアしてね! /
uri uriをフォローする

コメント

タイトルとURLをコピーしました