GoogleスプレッドシートのMATCH関数の基本と応用!データ検索の効率化テクニック

Sheet基本

MATCH関数 完全ガイド
値が何番目にあるかを返す検索の基礎

MATCHは「その値は何行目(何列目)にあるか」を返す。INDEXと組み合わせて検索に使うのが定番だが、単体でも入力検証・位置確認・動的参照に活躍する。

GASとの関係:Array.indexOf() / findIndex() に対応

GASで headers.indexOf("売上") と書く「配列の何番目か」はMATCHと同じです。完全一致が indexOf()、条件付きが findIndex() に対応します。

GASで自動化を学ぶ →
目次

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分・完全無料。

▶ 無料で登録する

📧 無料メルマガ登録

DX・AI活用のヒントを週1回お届け。登録特典:すぐ使えるプロンプト集&GASテンプレート。

登録情報は第三者に提供しません。いつでも配信停止できます。

目次