【スプレッドシート】MATCH|検索値があれば、その位置(行・列で何番目か)を知らせる


MATCH関数って構文みてもよくわからない…

 構文


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

MATCH (検索値, を検索する範囲, の検索方法)

 検索値:検索したい値(120、”長野”、A2 など)
 検索する範囲:検索値を検索する、連なった列や行
 検索方法(デフォルトは 1):

 1 は、範囲を昇順で並べ替えた上で、検索値以下の最大値を探します。
 0 は完全一致を検索。範囲が並べ替えられていない場合、必須の値です。
 -1 は、範囲を降順で並べ替えた上で、検索値以上の最小値を探します。



問題を解いて、直感的に理解してみたら?

 例題


2つの検索値(宮地 綾、 90)の位置を、それぞれ列・行中何番目かで答えなさい

サンプルファイル

 回答

1. G3とG4を選択し、=MATCH()を入力。
2. 検索値は、F3と、F4を指定
3. 検索範囲は、C1:C7(列)と、A4:D4(行)を指定。
4. 検索方法は、完全一致するセルの位置を求めるので0


つまり、検索範囲中に検索値があれば、 その位置を行・列数で教えてくれるってこと?
うん!検索範囲を列で指定したら、その列中上から何番目に検索値があるか。行で指定したら、左から数えて何番目かを教えてくれるわ。
 検索方法(デフォルトは 1)

ってあったけど、今回は「0」なんだね…
完全一致の検索は「0」だから、最も使用頻度が高いわね。「1」と「-1」は少しクセがあるの。


Step # 1:検索方法「1」と「-1」のつかいかた


検索方法「1」


検索方法を1にすると、検索値以下の最も大きい値を探します。
G3 = MATCH(59,D3:D7,1)
検索値59以下で、範囲D3:D7にある最も大きい数は、35。よって1行目が答えです。

検索範囲(青枠)は、あらかじめ昇順にしておきましょう。


MATCH (検索値, 検索する範囲, 検索方法)
 今回の例では、59が検索値。D3:D7が、検索する範囲です。


検索方法「-1」


検索方法を -1にすると、検索値以上で最も小さい値を探します。検索範囲は降順です。
G3 = MATCH(59,D3:D7,-1)
検索値59以上で、範囲D3:D7にある最も小さな数は、60。よって4行目が答えです。



「1」は昇順、「-1」は降順に!


範囲を、昇降順に並び替えていなかった場合、誤った答えになるので注意しましょう。
G3 = MATCH(59,D3:D7,-1)
検索方法は「-1」なので、本当は降順ですが、あえて昇順にしてあります(青枠)。正答は60のある「2」行目ですが、誤った答え「5」が表示されています。



入力値のある最終行を知るテクニック!?


例えば、以下のように検索範囲が全て同数だった場合に、検索方法を「1」とすると、昇順で並んでいると仮定するので、最終行にある「1」の行数を取得します。

G3 = MATCH(1,D3:D7,1)
この性質を利用して、入力値のある最終行を取得する方法としてもMATCH関数は有名なの!詳しくは以下の記事を見てみてね。


【スプレッドシート】名前付き範囲を、内容の追加に応じて自動拡大させる方法|MATCH

2020.02.14


Step # 2:曖昧な情報でも検索したい時のワイルドカード


曖昧な情報?
例えば、「山」から始まるのは覚えていても、「山田」なのか、「山口」なのか忘れたときに、山を含む名前を検索できるの!
ワイルドカードって?
「*」や「?」のことよ。日本語でいう「〜」のイメージね。
意味方法備考
「山」を含む*山*山,山口,三鷹山山が含まればなんでもOK
「山」で始まる山*山,山口,山形県民山から始まるのだけ!
「山」で終わる*山山,大山,富士山山で終わるのだけ!
「山」と2文字A??山形県, 富士山
?=1文字。文字数を決めれる!



部分一致検索(*山*)


 文字の前後に「*」を置くことで、その文字が含まれるセルを検索します。
G3 =(MATCH(“*山*“,C2:C6,0))
C2:C6(青枠)中で「山」を含むセルは上から2番目ですね。



*苗=「苗」で終わる, 苗*=「苗」で始まる値検索


 例えば、*苗であれば、「苗」で終わる値の位置を返します。
G3 =(MATCH(“*苗“,C2:C6,0))
「苗」で終わる値は、青枠の範囲中3番目の「結城 早苗」ですね。



文字数・位置指定検索(? = 1スペース)


 例えば、梅????であれば、梅の後ろに、4つ値が続く文字の位置を返します。
G3 =(MATCH(“梅????“,C2:C6,0))
「梅原_達雄」は文字間の空白も1つの値とみなすので、「梅に4つの値が続く」に該当しますね。