INDEX+MATCH で、左側の列や縦横どちらの向きでも検索する
約12分
このレッスンのゴール
MATCH で求めた位置を INDEX に渡し、左側の列の検索や、行・列2つの条件での検索ができる
先にこちらを学んでおくと安心:MATCH で「何番目にあるか」を求めるINDEX で「○行目・△列目」の値を取り出す
「商品名から商品コードを調べたい」。でも商品コードは商品名より左の列にあります。XLOOKUP なら向きを気にせず使えますが、古いファイルでは INDEX+MATCH で書かれていることが多いので、読み書きできるようにしておきましょう。
MATCH で「何番目にあるか」を求め、その数字を INDEX の行番号・列番号に渡します。=INDEX($A$2:$A$6,MATCH(G2,$B$2:$B$6,0)) は「商品名(G2)が商品名の列の何番目にあるかを MATCH で求め、その番目を商品コードの列から INDEX で取り出す」という意味です。
行と列、2つの条件で探したいときは、MATCH を2回使います。=INDEX($B$9:$D$12,MATCH(G9,$A$9:$A$12,0),MATCH(H9,$B$8:$D$8,0)) は「店舗名で行番号を、月の名前で列番号を、それぞれ MATCH で求めて INDEX に渡す」という書き方です。
よくあるミス
MATCH の検索範囲と INDEX の範囲を同じ範囲にする
取り出したいのは別の列(商品コード)なのに、商品名の列から探してしまう
行の MATCH と列の MATCH を、INDEX に渡す順番で逆にする
INDEX は「行番号, 列番号」の順。逆にすると #REF! になったり、ずれた値になる
このレッスンの用語
- 関数かんすう
- 決まった計算をしてくれる命令。
=SUM(C2:C11)のように「=関数名(引数)」の形で使う。 - 引数ひきすう
- 関数に渡す材料。( ) の中に「,」で区切って並べる。SUMIFS なら「どこを合計するか」「どんな条件か」が引数。