概要
FILTER 関数はとても便利ですが、
条件に合うデータが 1 件もないときに “空結果(空配列)” を返す という特徴があります。
このとき Excel は #CALC!(計算できません)エラーを表示します。
これは「間違い」ではなく
“該当データがなかった”という正常な状態 なのですが、
見た目が悪くなったり、後続の計算が止まったりします。
そこで使うのが IFERROR。
FILTER の空結果をキャッチして、
空白・0・メッセージなどに置き換える ことで、
表を安定して動かせます。
FILTER の空結果とは?
条件に一致するデータがゼロ件のときに起きる
例:
=FILTER(A2:A20, A2:A20="りんご")
A2:A20 に「りんご」が 1 件もなければ、
FILTER は 空配列 を返し、Excel は #CALC! を表示します。
これは FILTER の仕様であり、
「該当なし」という自然な結果です。
IFERROR で空結果を安全に処理する基本形
テンプレート
=IFERROR(FILTER(範囲, 条件), 代わりに返す値)
空結果(空配列)になったときだけ、
第 2 引数の値を返します。
パターン1:空結果なら空白を返す
見た目を崩したくないときの定番
=IFERROR(FILTER(A2:A20, A2:A20="りんご"), "")
動き:
- 該当あり → FILTER の結果をそのまま返す
- 該当なし → 空白(””)を返す
グラフや印刷で余計なエラーを見せたくないときに便利です。
パターン2:空結果ならメッセージを返す
ユーザーに「該当なし」を明示したいとき
=IFERROR(FILTER(A2:A20, A2:A20="りんご"), "該当データなし")
「なぜ結果が出ていないのか」を
ユーザーが理解しやすくなります。
パターン3:空結果なら 0 を返す
数値集計の前処理として便利
=IFERROR(FILTER(A2:A20, A2:A20>100), 0)
FILTER の結果をそのまま SUM したい場合など、
空配列を 0 に変えておくと後続処理が安定します。
パターン4:複数条件で空配列になりやすい場合
条件が厳しいと空配列が頻発する
例:A列が「東京」かつ C列が 100 超え
=FILTER(A2:C100, (A2:A100="東京") * (C2:C100>100))
該当なし → #CALC!
IFERROR で包むと安全になります。
=IFERROR(
FILTER(A2:C100, (A2:A100="東京") * (C2:C100>100)),
"該当なし"
)
パターン5:FILTER の結果を別の関数に渡すときの空配列対策
空配列が後続の関数を止めるのを防ぐ
例:FILTER の結果を AVERAGE に渡す
=AVERAGE(FILTER(A2:A20, A2:A20>100))
該当なし → AVERAGE がエラー
対策:
=IFERROR(AVERAGE(FILTER(A2:A20, A2:A20>100)), 0)
例題
問題1
A2:A20 の中から「りんご」だけを FILTER で抽出し、
該当がない場合は空白を返したい。
その式を書いてください。
=IFERROR(FILTER(A2:A20, A2:A20="りんご"), "")
問題2
A2:C100 の中から「東京」かつ C列が 100 超えの行だけ抽出し、
該当がない場合は「該当なし」と表示したい。
その式を書いてください。
=IFERROR(FILTER(A2:C100, (A2:A100="東京")*(C2:C100>100)), "該当なし")
問題3
A2:A20 の UNIQUE 結果が空配列になったとき、
「データなし」と表示したい。
その式を書いてください。
=IFERROR(UNIQUE(A2:A20), "データなし")
問題4
A2:A20 を SORT した結果が空配列だった場合、
空白を返す式を書いてください。
=IFERROR(SORT(A2:A20), "")
問題5
A2:A20 の中から 50 より大きい値だけ抽出し、
該当がない場合は「0」を返したい。
FILTER × IFERROR の式を書いてください。
=IFERROR(FILTER(A2:A20, A2:A20>50), 0)
まとめ
「FILTER 空結果対策 → IFERROR」のポイントは次の通りです。
- FILTER は該当なしのとき 空配列(#CALC!) を返す
- 空配列は“異常”ではなく“該当なし”
- IFERROR で空白・0・メッセージなどに置き換える
- FILTER・UNIQUE・SORT など動的配列関数では必須の仕上げ
まずはこの基本形を覚えておくと安心です。
=IFERROR(FILTER(範囲, 条件), 代わりの値)
動的配列を使うなら、空結果対策は“お作法”です。
あなたの表でもぜひ取り入れてみてください。
