IFERROR
関数を使うと、INDEX
と MATCH
の組み合わせで検索した際に、条件に一致しない場合や空白セルにアクセスした場合でも、わかりやすい代替メッセージを表示できます。
例:スコア表の検索とエラー処理
次のような表があるとします:
A | B | C |
---|---|---|
Name | Category | Score |
Alice | Math | 85 |
Bob | Science | 75 |
Alice | Science | |
Bob | Math | 80 |
Alice | Geography | 70 |
目的:「Name」が Alice
かつ「Category」が Math
の場合の「Score」を取得し、見つからない・空欄のときにはエラー処理を加えたい。
基本の数式(条件一致 × エラー処理)
=IFERROR(INDEX(C2:C7, MATCH(1, (A2:A7="Alice") * (B2:B7="Math"), 0)), "Not found")
※注意: スプレッドシートではこの式を配列数式として扱うため、入力後に Ctrl + Shift + Enter
を押す必要はありません(Google スプレッドシートでは自動で処理されます)。
数式の解説
A2:A7="Alice"
:名前が Alice であるかを判定B2:B7="Math"
:カテゴリーが Math であるかを判定- 2つの条件を掛け合わせることで、両方を満たす行だけが
1
になります MATCH(1, ..., 0)
:最初に一致した行番号(相対位置)を取得INDEX(C2:C7, ...)
:その行のスコアを取り出すIFERROR(..., "Not found")
:見つからない場合は “Not found” と表示
より安全な書き方(空白対応)
条件に一致する行が見つかっても、スコアが空白だった場合に別メッセージ「No score」を表示したい場合は、以下のように書けます:
=IFERROR(
IF(
INDEX(C2:C7, MATCH(1, (A2:A7="Alice") * (B2:B7="Math"), 0)) = "",
"No score",
INDEX(C2:C7, MATCH(1, (A2:A7="Alice") * (B2:B7="Math"), 0))
),
"Not found"
)
この数式では、まず一致したスコアが空かどうかを判定し、空なら「No score」、そうでなければスコアを表示します。さらに、該当データが見つからなければ「Not found」が返されます。
まとめ
IFERROR
を使うことで、INDEX MATCH
関数の検索結果がエラーになったときでも、ユーザーにとってわかりやすい形で結果を表示できます。
特に、複数条件での検索・空白セルの存在が想定されるケースでは、エラー処理を加えることでデータの見栄えやユーザー体験が向上します。
コメント