Excel関数 逆引き集 | 行番号を取得 → MATCH

Excel VBA Excel
スポンサーリンク

概要

「この値は表の何行目にあるのか?」を知りたいときに使うのが MATCH(マッチ)関数です。
MATCH は 検索値が“範囲の中で何番目にあるか”を返す関数で、VLOOKUP や INDEX と組み合わせると強力な検索システムが作れます。

初心者がつまずきやすい「行番号とセルの行番号の違い」も丁寧に解説します。


基本の使い方

書式

=MATCH(検索値, 検索範囲, 検索方法)
  • 検索値:探したい値(例:商品コード)
  • 検索範囲:探す範囲(縦方向でも横方向でもOK)
  • 検索方法
    • 0 … 完全一致(通常はこれを使う)
    • 1 / -1 は近似値検索なので初心者はまず 0 を覚えればOK

例(A2:A100 の中で E2 の値が何番目か)

=MATCH(E2, A2:A100, 0)

これで「A2:A100 の中で E2 が上から何番目か」が分かります。


具体例

商品コードが表の何行目にあるか調べる

A列に商品コードが並んでいるとします。

=MATCH(E2, $A$2:$A$100, 0)

結果が「5」なら、A2:A100 の中で 5番目にあるという意味です。
(実際のシートの行番号とは違うので注意)

行番号を INDEX と組み合わせて値を取得

MATCH は「行番号を返す」だけなので、値を取りたいときは INDEX と組み合わせます。

=INDEX($B$2:$B$100, MATCH(E2, $A$2:$A$100, 0))

A列で検索 → B列の対応する値を返す、という VLOOKUP の代替になります。


応用テンプレート

行番号を“実際のシート行番号”に変換する

MATCH の結果は「範囲内の位置」なので、実際の行番号にしたい場合は開始行を足します。

=ROW($A$2) - 1 + MATCH(E2, $A$2:$A$100, 0)

A2 から始まる範囲なら、ROW(A2)=2 なので「+1」されて実際の行番号になります。

横方向(列番号)を取得する

MATCH は横方向にも使えます。

=MATCH("売上", B1:Z1, 0)

B1:Z1 の中で「売上」が何列目かを返します。

複数条件で行番号を取得(上級)

=MATCH(1, (A2:A100=H2) * (B2:B100=I2), 0)

配列式で「A列がH2 かつ B列がI2」の行番号を取得できます。

最後に一致した行番号を取得(下から検索)

=XMATCH(E2, A2:A100, 0, -1)

MATCH ではなく XMATCH を使うと「下から検索」ができます。


よくあるつまずきと対策

MATCH の結果は「範囲内の位置」であって「シートの行番号」ではない

A2:A100 の中で 5番目 → 実際の行番号は 6行目
この違いを理解しておくと混乱しません。

完全一致(0)を必ず使う

検索方法を省略すると近似値になり、誤った行番号が返ることがあります。

=MATCH(E2, A2:A100, 0)

文字列と数値の違いで見つからない

“00123”(文字列)と 123(数値)は別物です。
必要に応じて TEXT や VALUE で揃えましょう。

重複があると「最初の一致」しか返さない

最新データを取りたい場合は XMATCH の検索モード -1 を使うのが安全です。


例題

問題1: A2:A100 の中で、E2 の値が何番目にあるかを F2 に表示してください(完全一致)。

=MATCH(E2, A2:A100, 0)

問題2: A列で検索し、B列の対応する値を INDEX+MATCH で G2 に表示してください。

=INDEX($B$2:$B$100, MATCH(E2, $A$2:$A$100, 0))

問題3: MATCH の結果を“実際の行番号”に変換して H2 に表示してください(範囲は A2:A100)。

=ROW($A$2) - 1 + MATCH(E2, $A$2:$A$100, 0)

問題4: 1行目(B1:Z1)の中で「売上」が何列目かを I2 に表示してください。

=MATCH("売上", B1:Z1, 0)

問題5: A列が H2、B列が I2 に一致する行番号を J2 に表示してください(配列式)。

=MATCH(1, (A2:A100=H2) * (B2:B100=I2), 0)

まとめ

MATCH は「行番号(または列番号)を取得する」ための基礎関数で、
INDEX と組み合わせると VLOOKUP を超える柔軟な検索ができます。

押さえるべきポイントは次の4つ。

  • MATCH は「範囲内の位置」を返す
  • 完全一致(0)を使うのが基本
  • INDEX と組み合わせると強力な検索が作れる
  • 実際の行番号に変換したいときは ROW を足す

この型を覚えると、検索・抽出・参照の精度が一気に上がります。

タイトルとURLをコピーしました