Sheet基本
MATCH関数 完全ガイド
MATCH関数 完全ガイド
値が何番目にあるかを返す検索の基礎
MATCHは「その値は何行目(何列目)にあるか」を返す。INDEXと組み合わせて検索に使うのが定番だが、単体でも入力検証・位置確認・動的参照に活躍する。
GASとの関係:Array.indexOf() / findIndex() に対応
GASで headers.indexOf("売上") と書く「配列の何番目か」はMATCHと同じです。完全一致が indexOf()、条件付きが findIndex() に対応します。
目次
MATCH関数とは
MATCH関数は指定した値が範囲内の何番目にあるかを返す関数です。値そのものではなく「位置(番号)」を返す点がポイントです。INDEXと組み合わせることで強力な検索を実現できます。
基本構文
=MATCH(検索値, 検索範囲, [一致タイプ])
| 一致タイプ | 意味 | 前提条件 |
|---|---|---|
| 0 | 完全一致(最もよく使う) | なし |
| 1 | 以下の最大値(近似一致・昇順) | 昇順ソート必須 |
| -1 | 以上の最小値(近似一致・降順) | 降順ソート必須 |
実務では常に 0(完全一致) を使います。省略するとデフォルトが1(近似一致)になり、意図しない結果になることがあるので必ず明示します。
基本的な使い方
// A列で"田中"が何行目にあるかを返す
=MATCH("田中", A2:A100, 0) // → 例: 5 (A6に"田中"がある)
// セル参照で使う(実務的な書き方)
=MATCH(G2, A2:A100, 0)
// 1行目(ヘッダー行)で列名を探す
=MATCH("売上", A1:Z1, 0) // "売上"が何列目かを返す
実務でよく使うパターン
パターン1:値が存在するか確認(IFERRORと組み合わせ)
// A2の値がマスターリストに存在するかチェック
=IFERROR(MATCH(A2, マスター!A:A, 0), 0) > 0
// → TRUE(存在する)/ FALSE(存在しない)
パターン2:列番号を動的に取得(ヘッダーから)
// E1に列名("売上"など)を入れると対応する列番号を返す
=MATCH(E1, A1:Z1, 0)
// INDEX+MATCH で列を動的切り替え
=INDEX(A2:Z100, MATCH(G2, A2:A100, 0), MATCH(E1, A1:Z1, 0))
パターン3:リストの最終位置を取得
// A列の最後のデータが何行目か
=MATCH("zzz", A:A) // テキスト列の場合(近似一致で最後へ)
=MATCH(9E+307, A:A) // 数値列の場合
パターン4:日付の位置を探す(カレンダー応用)
// 1行目に日付が並ぶカレンダーで今日の列番号を探す
=MATCH(TODAY(), A1:AH1, 0)
MATCH でよくあるエラー
| エラー | 原因 | 対処 |
|---|---|---|
| #N/A | 検索値が範囲内に見つからない | IFERRORかIFNAで包む。検索値のスペース・型を確認 |
| 意図しない行番号 | 一致タイプを省略(デフォルト1=近似一致) | 必ず第3引数に0を入れる |
| 全角半角で一致しない | MATCHは大文字小文字は区別しないが全角半角は区別する | ASC()やTEXT()で正規化してからMATCH |
この知識をGASで活かす
GASで「ヘッダー行から列番号を動的に取得」するパターン(indexOf())は、スプレッドシートのMATCHと全く同じ発想です。MATCHをマスターするとGASでの動的範囲処理の設計がスムーズになります。
Free Newsletter
AIを業務に活かしたいなら
SMR-Labメルマガ
毎週火曜10時、コピペで使えるChatGPTプロンプト・
GASテンプレートをお届け。登録は1分・完全無料。

