先に結論です。FILTER関数が使えないときは、Officeの再インストールから始めず、セルに表示されたエラーを分けて確認します。#NAME?、_xlfn._xlws.FILTER、#SPILL!、#CALC!、#REF!は原因も直し方も異なります。最初にブックを複製し、Excelの製品名と数式バーを確認すれば、多くのケースはデータを消さずに切り分けられます。
FILTER関数そのものに対応しているのは、Microsoftの現行資料ではExcel for Microsoft 365、Excel 2024、Excel 2021のWindows版・Mac版などです。Excel 2019以前で_xlfnが付く場合、修復で新しい関数が追加されるわけではありません。対応製品で開くか、要件に合う別の抽出方法を選びます。
症状から最初の確認場所を決める
| 表示・症状 | 主な確認対象 | 最初に行うこと |
|---|---|---|
| #NAME? | 関数名、定義名、引用符、範囲記号、対応製品 | 数式バーで綴りと構文を確認する |
| _xlfn._xlws.FILTER | そのExcelでFILTERを利用できるか | [ファイル]→[アカウント]で製品名を確認する |
| #SPILL! | 結果を展開する範囲の障害物、テーブル内の式 | 予定スピル範囲を確認し、式を空白領域へ移す |
| #CALC! | 抽出結果が0件、第3引数の省略 | FILTERの[if_empty]を指定する |
| #REF! | 閉じた別ブックへの動的配列参照 | 参照元と参照先を両方開く |
| 式はあるが値が変わらない | 計算方法、参照範囲、元データ | 自動計算と参照先を確認する |
同じ「使えない」でも、関数を認識していない状態と、認識はしているが結果を置けない状態では対処が逆になります。エラーを見ずにOffice修復、古い形式への保存、数式の削除を行うと、原因を増やしてしまいます。
FILTER関数の対応製品と基本構文
基本構文は=FILTER(array,include,[if_empty])です。arrayには抽出対象、includeには各行または各列を含めるかどうかを返す条件、if_emptyには一致が0件のときの表示を指定します。結果は1セルだけでなく必要な範囲へ自動展開され、この動作をスピルと呼びます。
たとえばA2:C100のうちC列が「完了」の行を抽出するなら、空白領域に=FILTER(A2:C100,C2:C100="完了","該当なし")と入力します。地域設定によって関数の引数区切りがカンマではなくセミコロンになる場合があります。Excelが入力途中に示す構文候補に合わせてください。
元データをExcelテーブルにすることは有効です。構造化参照なら行の追加・削除に追従できます。ただし、スピルするFILTER式そのものをテーブルの列内へ置くことはサポートされません。元データはテーブル、抽出結果はテーブル外の十分な空白領域、という配置に分けます。
データを壊さない復旧手順
- 原本を保護する。問題のブックを閉じて複製し、複製側で調査します。OneDriveまたはSharePoint上のブックならバージョン履歴も確認します。古いExcel形式へ上書き保存しないでください。
- エラー文字列を正確に記録する。セルの表示だけでなく数式バーを見て、FILTERの前に
_xlfn._xlws.が付くか、先頭にアポストロフィがないか、関数名や引用符が欠けていないかを確認します。 - 製品とライセンスを確認する。[ファイル]→[アカウント]→[製品情報]を開きます。Microsoft 365、Excel 2024、Excel 2021のいずれかか、タイトルバーに「ライセンスのない製品」に相当する表示がないかを確認します。
- 新規ブックで最小テストを行う。A1:A3へ1、2、3、B1:B3へ1、0、1を入力し、空のセルへ
=FILTER(A1:A3,B1:B3=1,"")を入力します。これが動けばExcel本体より対象ブックの構文・配置・参照が原因です。 - エラー別の分岐へ進む。
#NAME?なら構文、_xlfnなら製品対応、#SPILL!なら展開範囲、#CALC!なら0件時の値、#REF!なら外部参照を直します。 - 更新は切り分け後に行う。対応製品なのに最小テストも失敗するときは、[ファイル]→[アカウント]→[更新オプション]→[今すぐ更新]を実行します。組織管理で項目がない場合は管理者へ依頼します。
- 最後に修復を検討する。更新後も新規ブックで再現するときだけ、Windowsのインストール済みアプリからMicrosoft 365またはOfficeの[変更]を開き、クイック修復、必要ならオンライン修復の順で進めます。
#NAME?と_xlfn._xlws.FILTERの直し方
#NAME?は「FILTER非対応」と同義ではありません。Microsoftは、関数名のタイプミス、未定義の名前、文字列を囲む二重引用符の不足、範囲のコロン不足、必要なアドインが無効といった原因を挙げています。まず、数式を手で打ち直す前に数式バーでFILTERの綴り、括弧の数、区切り記号、条件文字列の引用符を確認します。
例として、=FILTER(A2:C100,C2:C100=完了)では「完了」が文字列として囲まれていません。正しくは=FILTER(A2:C100,C2:C100="完了","該当なし")です。名前の管理で定義した名称を使っている場合は、[数式]→[名前の管理]で参照先と適用範囲も確認します。原因が残ったままIFERRORで包むと表示だけが隠れ、Microsoftが推奨する構文修正ができません。
_xlfn._xlws.FILTERが数式バーに見える場合、そのExcelでは関数を評価できない可能性が高い状態です。対応版Excelで同じ複製ブックを開いて確認します。永続ライセンスのExcel 2019を最新パッチへ更新してもExcel 2021や2024へ製品世代が上がるわけではないため、「更新したのに直らない」のは故障ではありません。
#SPILL!を安全に解消する
#SPILL!はFILTERが認識され、結果も計算できたものの、展開先を確保できないときに表示されます。エラーセルを選ぶと予定範囲が示されるので、そこに値、別の数式、結合セル、テーブル領域がないかを確認します。障害物が業務データなら削除せず、FILTER式を別の空白領域へ移すほうが安全です。
テーブルの列へFILTER式を入力している場合、式をテーブル外へ移します。元データはTable1のままにし、たとえばテーブル外へ=FILTER(Table1,Table1[状態]="完了","該当なし")と置けば、元テーブルの増減に追従しながら結果をスピルできます。列名とテーブル名は実際のブックに合わせてください。
#CALC!と#REF!の分岐
条件に一致する行が0件で第3引数を省略すると、FILTERは空の配列を返せず#CALC!になることがあります。0件を異常としない運用なら"該当なし"や空文字列を第3引数に指定します。一方、include側に#N/Aや#VALUE!が含まれる場合はFILTER全体もエラーになるため、条件列の元エラーを先に直します。
別ブックを参照した動的配列は、Microsoftの資料上、参照元と参照先の両方が開いている場合に限ってサポートされます。参照元を閉じた状態で更新して#REF!になったら、両方を開いて再計算します。定期処理で参照元を閉じる必要があるなら、Power Queryなど別の取り込み設計を検討し、閉じた外部ブックをFILTERで直接参照し続けない構成にします。
ライセンス・更新・Office修復が必要な条件
Microsoft 365のライセンスに問題がある場合、通常は「ライセンスのない製品」の表示や、文書を開いて印刷はできても編集・新規作成ができない機能制限として現れます。FILTERだけが突然別名へ置換された、と決めつけないでください。正しいアカウントでサインインしているか、サブスクリプションが有効か、複数のOfficeが競合していないかをMicrosoftのライセンス認証手順に沿って確認します。
Office修復は、対応製品である、新規ブックの最小式でも失敗する、更新を適用しても変わらない、という条件がそろってから行います。クイック修復は主に破損ファイルを検出・置換し、オンライン修復はより広くスイート全体を修復します。オンライン修復ではインターネット接続、再認証、再起動が必要になる場合があるため、業務時間と同期状態を確認して実施します。
非対応版で急ぎの作業を続ける方法
代替手段は「何を得たいか」で選びます。抽出された行そのものが必要なら、データタブのフィルターや詳細設定フィルターを使い、結果を別の場所へコピーします。合計だけが必要ならSUMIFS、件数だけならCOUNTIFS、分類別の集計ならピボットテーブルが候補です。SUMIFSは行一覧を返さないため、FILTERの完全な置き換えとは説明しません。
共同作業では、FILTERを含むブックを開く最低製品をチームで決めます。対応していない利用者が古い形式へ保存しないよう、ファイル名に互換性要件を含め、重要ブックはOneDriveまたはSharePointのバージョン履歴を利用します。値だけを配布する必要がある場合は、原本を残した複製へ値貼り付けした配布版を作ります。
再発を防ぐための運用
ブックの先頭シートへ、利用可能なExcel製品、更新日、外部参照の有無、FILTER式を置いたシートを記録します。共同編集者が非対応版で開いた場合に何が起きるかも短く明記します。数式を変更したときは、条件に一致する例、一致しない例、条件列にエラーがある例をテストし、抽出行数と元データ件数を照合します。
重要な抽出結果を後続処理が利用する場合は、「該当なし」という文字列を数値列へ混ぜない、空文字列を0として集計しないなど、0件時の仕様を決めます。外部ブック参照は両方を開く必要があるため、無人処理ではPower Queryや承認済みのデータ取り込みへ変更し、利用者の手操作に依存しない設計を検討します。
失敗しやすい対処と注意点
- エラーの種類を見ずにOfficeをアンインストールしない。対象ブックだけの問題なら効果がなく、再認証の手間が増えます。
- 古いExcel形式へ原本を上書きしない。互換性チェックで重大な機能損失が示された場合は、別ファイルとして保存します。
#NAME?をIFERRORで隠さない。構文・製品・定義名の問題を直します。#SPILL!の障害物を一括クリアしない。予定範囲に必要なデータがあるか確認してから、式を移動します。- 閉じた外部ブックを参照する動的配列を、無人処理の前提にしない。公式の制限を踏まえて取り込み方式を見直します。
よくある質問
Excel 2019を更新すればFILTERは使えますか
通常は使えません。セキュリティ更新と、製品世代で提供される関数は別です。FILTERの公式対象製品でブックを開くか、目的に合う代替機能を利用します。
FILTERをテーブル内へ入れると#SPILL!になります
スピル配列数式はテーブル内でサポートされません。元データのテーブルは維持し、FILTER式だけをテーブル外へ移してください。構造化参照を使えば元テーブルの増減へ追従できます。
一致がないとき空白にできますか
第3引数へ空文字列を指定します。例は=FILTER(A2:C100,C2:C100="完了","")です。ただし、本当に0件なのか条件列にエラーがあるのかは分けて確認してください。
別のPCだけ_xlfnになります
そのPCのExcel製品、サインイン中のアカウント、更新チャネルを比較します。片方がExcel 2019以前なら製品差が原因です。対応版なのに最小式も失敗する場合だけ更新と修復へ進みます。
数式を値へ変換すれば直りますか
表示結果を固定して配布する目的には使えますが、元データ変更への追従を失います。原本の数式を残し、複製した配布版だけを値へ変換してください。
公式資料
- Microsoft Support: FILTER function
- Microsoft Support: Dynamic array formulas and spilled array behavior
- Microsoft Support: How to correct a #NAME? error
- Microsoft Support: Formula compatibility issues in Excel
- Microsoft Support: How to update Microsoft 365 or Office for Windows
- Microsoft Support: Repair an Office application
まとめ
FILTER関数の復旧は、エラー名の確認、製品の確認、新規ブックの最小テスト、エラー別修正、更新、修復の順で進めます。_xlfnは対応製品、#SPILL!は展開場所、#CALC!は0件時の指定、#REF!は外部ブックを重点的に確認します。原本への上書きや一括削除を避ければ、原因を見失わず安全に作業を戻せます。最後に正常だったExcel製品、式、確認日を記録しておくと、別端末で再発した際も製品差とブック差を短時間で比較できます。テスト結果もブックの変更履歴へ残しましょう。

コメント