概要
大量のデータを扱っていると、
「どの行がエラーになっているのかだけ知りたい」
という場面が必ず出てきます。
- 計算式の一部が壊れている
- 参照切れで
#REF!が出ている - 割り算で
#DIV/0!が出ている - VLOOKUP の検索失敗で
#N/Aが出ている
こうした “エラー行だけ” を一瞬で抽出できる のが
FILTER × ISERROR の組み合わせです。
FILTER は「条件に合う行だけを抽出する」関数、
ISERROR は「そのセルがエラーかどうか」を判定する関数。
この2つを組み合わせると、
エラー行だけを抽出する強力なフィルタリング機能 が完成します。
FILTER × ISERROR の基本
基本形(テンプレート)
=FILTER(抽出したい範囲, ISERROR(判定したい範囲))
動きは次の通りです。
- ISERROR が TRUE の行だけ FILTER が抽出
- エラーでない行は自動的に除外
たとえば、A2:A20 の中からエラーだけを抽出したいなら、
=FILTER(A2:A20, ISERROR(A2:A20))
これだけで エラーセルだけの一覧 が作れます。
行単位でエラー行を抽出する
A列にエラーがある行を丸ごと抽出
A列に計算式が入っていて、
エラーになっている行だけを B〜D列ごと抽出したい場合。
=FILTER(A2:D20, ISERROR(A2:A20))
動き
- A列がエラー → その行全体を抽出
- A列が正常 → 抽出されない
「どの行が壊れているか」を一瞬で把握できます。
複数列のどこかにエラーがある行を抽出する
OR 条件で複数列をチェック
A列または B列のどちらかにエラーがある行を抽出したい場合。
=FILTER(A2:D20, ISERROR(A2:A20) + ISERROR(B2:B20))
ISERROR の結果は
TRUE=1、FALSE=0
として扱われるため、
足し算で「どちらかが TRUE なら抽出」という OR 条件になります。
特定のエラーだけ抽出する(応用)
#N/A だけ抽出したい場合
検索失敗だけを抽出したいときは ISNA を使います。
=FILTER(A2:A20, ISNA(A2:A20))
#DIV/0! だけ抽出したい場合
#DIV/0! は ISERR で判定できます(#N/A 以外のエラー)。
=FILTER(A2:A20, ISERR(A2:A20))
エラーがない場合の対策
FILTER は抽出結果が空だとエラーになる
エラー行が1つもない場合、FILTER は #CALC! を返します。
それを避けるには IFERROR を組み合わせます。
=IFERROR(FILTER(A2:D20, ISERROR(A2:A20)), "")
これで
- エラー行がある → 抽出結果を表示
- エラー行がない → 空白
という安全な動きになります。
例題
問題1
A2:A20 の中から、エラーになっているセルだけを抽出する FILTER の式を書いてください。
=FILTER(A2:A20, ISERROR(A2:A20))
問題2
A2:D20 の表のうち、A列にエラーがある行だけを抽出する式を書いてください。
=FILTER(A2:D20, ISERROR(A2:A20))
問題3
A列または B列のどちらかにエラーがある行を抽出する式を書いてください。
=FILTER(A2:D20, ISERROR(A2:A20) + ISERROR(B2:B20))
問題4
A2:A20 の中から、#N/A エラーだけを抽出する式を書いてください。
=FILTER(A2:A20, ISNA(A2:A20))
問題5
A2:D20 の中にエラー行が1つもない場合は空白を返し、
エラー行がある場合は抽出結果を表示する式を書いてください。
=IFERROR(FILTER(A2:D20, ISERROR(A2:A20)), "")
まとめ
「エラー行のみ抽出 → FILTER × ISERROR」は、
大量データのトラブルシュートに欠かせないテクニックです。
まずはこの形を覚えておけば十分です。
=FILTER(範囲, ISERROR(範囲))
あなたのシートの中で
「どこが壊れているのか分からない」
という場面があれば、ぜひこの方法で エラー行だけを抽出 してみてください。
デバッグ効率が劇的に上がります。
