Excel関数 逆引き集 | 動的配列エラー抑止 → IFERROR

Excel
スポンサーリンク

概要

FILTER・UNIQUE・SORT・XLOOKUP などの 動的配列関数 はとても便利ですが、
条件に合うデータが 0 件だったり、参照範囲が不正だったりすると、
#CALC!(計算できません)#N/A などのエラーが発生します。

これらは「Excel が壊れた」のではなく、
“結果が返せない状況” が起きただけです。

そこで役立つのが IFERROR
動的配列関数を IFERROR で包むことで、
エラーを 空白・0・メッセージ に置き換え、
表全体を安定させることができます。


動的配列エラーとは?

FILTER の空配列エラー

=FILTER(A2:A20, A2:A20="りんご")

「りんご」が 1 件もなければ、
FILTER は 空配列(結果なし) を返し、Excel は #CALC! を表示します。

UNIQUE の空配列エラー

=UNIQUE(A2:A20)

対象が空の場合、同じく #CALC!

SORT の空配列エラー

=SORT(A2:A20)

並べ替えるデータが空なら #CALC!

これらはすべて IFERROR で抑止可能 です。


IFERROR の基本形

=IFERROR(計算式, エラー時の代替値)
  • 計算式が正常 → そのまま返す
  • 計算式がエラー → 代替値を返す

動的配列関数は「空配列=エラー扱い」になるため、
IFERROR との相性が抜群です。


パターン1:空結果なら空白を返す

FILTER × IFERROR の最も基本的な形

=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:複数条件で空配列になりやすい場合

条件が厳しいと空配列が頻発する

=FILTER(A2:C100, (A2:A100="東京") * (C2:C100>100))

該当なし → #CALC!

IFERROR で包むと安全になります。

=IFERROR(
  FILTER(A2:C100, (A2:A100="東京") * (C2:C100>100)),
  "該当なし"
)

パターン5:動的配列の結果を別関数に渡すときのエラー抑止

AVERAGE・SUM・MAX などが空配列で止まるのを防ぐ

例:FILTER の結果を平均したい

=AVERAGE(FILTER(A2:A20, A2:A20>100))

該当なし → AVERAGE がエラー

対策:

=IFERROR(AVERAGE(FILTER(A2:A20, A2:A20>100)), 0)

パターン6:UNIQUE・SORT の空配列対策

UNIQUE

=IFERROR(UNIQUE(A2:A20), "データなし")

SORT

=IFERROR(SORT(A2:A20), "")

例題

問題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)

まとめ

「動的配列エラー抑止 → IFERROR」のポイントは次の通りです。

  • FILTER・UNIQUE・SORT は該当なしのとき 空配列(#CALC!) を返す
  • 空配列は“異常”ではなく“該当なし”
  • IFERROR で空白・0・メッセージなどに置き換える
  • 動的配列関数を使うなら、空配列対策は必須の仕上げ

まずはこの基本形を覚えておくと安心です。

=IFERROR(動的配列関数, 代わりの値)

動的配列を使うなら、
エラー抑止は“お作法”として必ずセットで使っていきましょう。

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