スプレッドシートMATCH関数の使い方|INDEX関数と組み合わせて使う方法も解説

記事内の「“”」「‘’」が全角になっていますが、スプレッドシートで指定する場合は半角に変更してください

本記事では、スプレッドシートのMATCH関数について解説していきます。

具体例を使いながら解説していますので、ぜひ参考にしてみてください。

目次

スプレッドシートのMATCH関数

スプレッドシートのMATCH関数は、条件に一致したセルが何行目なのか・何列目なのかを取得できる関数です。

指定した値と一致する範囲内のアイテムの相対的な位置を返します。

公式ドキュメント

あくまで「セルの位置」を取得できるだけで、値そのものを取得することはできません。

値を取得するにはINDEX関数と組み合わせて使用しましょう。INDEX関数と組み合わせて使う方法は後ほど解説していきます。

MATCH関数の使い方

まずはMATCH関数の使い方です。MATCH関数は下記のように使用します。

MATCH(検索キー, 範囲, 検索の種類)

スクロールできます
引数説明
検索キー検索する値・条件を指定
範囲検索キーを検索する範囲を指定
検索の種類 [省略可 – デフォルトは 1] 検索する方法を「0・1・-1」のいずれかで指定

第3引数の検索の種類は、0・1・-1のどれかを指定します。違いは下記の通りです。

0完全に一致した値を取得します。範囲の並べ替えは不要です。
1検索キー以下で最も大きい値を取得します。範囲を昇順に並べておく必要があります。
-1検索キー以上で最も小さい値を取得します。範囲を降順に並べておく必要があります。

また、第2引数で指定する範囲は単一行か単一列を指定するようにしましょう。

MATCH関数を使った具体例3つ

それでは、MATCH関数を使った具体例をみていきます。今回は、第3引数の検索の種類がイメージしやすいように3つ用意しました。

以下の表を用いてそれぞれ解説していきます。

例①スイカの売上の位置を取得する

1つ目の例では、スイカの売上の位置を取得してみましょう。

以下の手順通り進めてみてください。

STEP
取得した位置を表示したいセルを選択

今回はC9セルにスイカの行数、C10セルに売上の列数を表示していきます。

STEP
選択したセルに下記のMATCH関数を入力

■C9セル

=MATCH(“スイカ”,A2:A7,0)

■C10セル

=MATCH(“売上”,A1:D1,0)

スイカの位置が3行目で売上の位置が4列目と取得できたので、スイカの売上の位置はD4セルだとわかりますね。

例②¥2,000以下で一番大きい売上の位置を取得する

2つ目の例は、第4引数に1を指定するケースです。売上が¥2,000以下の中で一番大きい値の位置を取得してみましょう。

STEP
元データを昇順に並べ替え

今回はQUERY関数を使って並べ替えた状態の表を用意します。

=QUERY(A2:D7,”order by D asc”)

QUERY関数を使って並べ替える方法は「【スプレッドシート】QUERY関数のorder by句で並べ替える方法」で解説しています。

STEP
D17セルにMATCH関数を入力

=MATCH(2000,D10:D15,1)

¥2,000に一番近い売上は¥1,900ですので、範囲で指定したD10:D15の中の3行目となります。正しく取得できていますね。

例③¥500以上で一番小さい単価の位置を取得する

3つ目の例は第4引数に-1を指定して、¥500以上の単価の中で一番小さい値の位置を取得してみましょう。

STEP
元データを降順に並べ替え

例②と同様にQUERY関数を使って並べ替えておきます。

=QUERY(A2:D7,”order by B desc”)

STEP
D17セルにMATCH関数を入力

=MATCH(500,B10:B15,-1)

単価が¥500以上の中で一番小さいのは「ぶどう」の¥600です。B10:B15の中の2行目に位置しているので、正しく取得できています。

MATCH+INDEXでセルの位置から値を取得

ここまでMATCH関数で条件に一致したセルの位置を取得してきました。

しかし、MATCH関数を単体で使うことはあまりなく、INDEX関数と組み合わせて使う場合がほとんどです。

MATCH関数の具体例で取得した位置をもとに、INDEX関数と組み合わせて値まで取得してみましょう。

例①スイカの売上を取得する

1つ目の例では、スイカの売上を取得してみましょう。

STEP
取得した位置を表示したいセルを選択

今回はC9セルを選択しておきます。

STEP
C9セルに関数を入力

=INDEX(A2:D7,MATCH(“スイカ”,A2:A7,0),MATCH(“売上”,A1:D1,0))

スイカの売上は¥1,200ですので正しく取得できていますね。

例②¥2,000以下で一番大きい売上を取得する

2つ目の例では、¥2,000以下で一番大きい売上の項目名を取得してみます。

STEP
元データを昇順に並べ替え

MATCH関数の第4引数に1を指定するため、売上の列を基準に昇順に並べ替えます。

STEP
D17セルに下記の関数を入力

=INDEX(A10:D15,MATCH(1200,D10:D15,1),MATCH(“項目”,A9:D9,0))

¥2,000以下で一番大きい売上の項目は、¥1,200のスイカですので正しく取得できました。

例③¥500以上で一番小さい単価の項目名を取得する

最後の例は、¥500以上で一番小さい単価の項目名を取得してみましょう。

STEP
元データを降順に並べ替え

MATCH関数の第4引数に-1を指定するため、単価の列を基準に降順に並べ替えます。

STEP
D17セルに下記の関数を入力

=INDEX(A10:D15,MATCH(500,B10:B15,-1),MATCH(“項目”,A9:D9,0))

今回の条件に一致する項目は、単価¥600のぶどうですので正しく取得できています。

まとめ

今回は、スプレッドシートのMATCH関数の使い方を解説しました。

特にINDEX関数と組み合わせて値を取得する方法は非常によく利用しますので、ぜひ参考にしてみてください。

目次