IFERRORとindex、matchの組み合わせを解説

IFERRORとindex、matchの組み合わせを解説 スプシの使い方

IFERROR 関数を使うと、INDEXMATCH の組み合わせで検索した際に、条件に一致しない場合や空白セルにアクセスした場合でも、わかりやすい代替メッセージを表示できます。

例:スコア表の検索とエラー処理

次のような表があるとします:

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 関数の検索結果がエラーになったときでも、ユーザーにとってわかりやすい形で結果を表示できます。

特に、複数条件での検索・空白セルの存在が想定されるケースでは、エラー処理を加えることでデータの見栄えやユーザー体験が向上します。

コメント