【Excel・エクセル】MATCH関数とINDEX関数を組み合わせた使い方
MATCH関数とINDEX関数を使って、VLOOKUP関数みたいな検索ができるって聞いたんだけど?
できるよ、やり方を見てみよう。
- INDEX関数とMATCH関数を組み合わせて、VLOOKUP関数の検索値が左になくてもできるVerになる
- =INDEX(配列,MATCH(検査値,検査範囲,照合の種類),列番号)
MATCH関数とINDEX関数の組み合わせの練習ファイルダウンロード
一緒にやってみませんか?
【Excel・エクセル】柔軟に検索できる、MATCH関数とINDEX関数の組み合わせ
検索する関数といえば、VLOOKUP関数が思い浮かぶと思います。
が、検索値が範囲の一番左にないといけないという点で、ちょっと煩わしさを感じること、ありませんか?
MATCH関数とINDEX関数を組み合わせれば、検索値の位置を気にすることなく、検索できるんです!
まずは、MATCH関数とINDEX関数をおさらいしてみよう。
INDEX関数とは?簡単な使い方
INDEX関数は、指定した範囲の中で、指定した行番号、列番号の位置にある値を教えてくれる関数です。
指定する範囲が1つか複数かで、ちょっと書き方が違います。
=INDEX(配列,行番号,列番号)
INDEX | この範囲の、この位置の値を教えて |
配列 | この範囲の |
行番号 | この位置(上から数えて何行目か) 配列が1列の時は、省略できる |
列番号 | この位置(左から数えて何列目か) 配列が1行の時は、省略できる |
範囲が一つの場合は、範囲と上から数えて何行目か、左から数えて何列目かを指定します。
もう一つの書き方もありますが、今回は使わないので割愛しますね。
INDEX関数は、こっちで詳しく教えてもらったよ!
MATCH関数とは?簡単な使い方
MATCH関数は、指定した値が指定した範囲の中の何行目(何列目)にあるかを教えてくれます。
=MATCH(検査値,検査範囲,照合の種類)
MATCH | この値は、この中の何番目にあるか教えて |
検査値 | この値は |
検査範囲 | この中の |
照合の種類 | 0:完全一致、-1:以上、1:以下 |
たとえばセルE2の値が、セルA2~A6の中の何行目にあるか知りたいとき。
式は「=MATCH(E2,A2:A6,0)となります。
詳しくは、こっちのページで解説しているよ。
【Excel・エクセル】MATCH関数とINDEX関数を組み合わせた使い方
組み合わせて使うと、こうなります。
=INDEX(配列,MATCH(検査値,検査範囲,照合の種類),列番号)
INDEX関数の行番号を、MATCH関数で表す感じだね。
やってみたら意外と簡単にできちゃうので、ぜひお試しください!
MATCH関数とINDEX関数の組み合わせの使用例
ここに、商品一覧の表があります。
商品Noを使って、商品名を検索したいと思います。
VLOOKUP関数で出せそうですが、検索値になりそうな商品Noが、検索範囲の一番右にあるので使えません。
移動させてもいいけど、他の部分に影響出たら嫌だしな……
そこで、MATCH関数とINDEX関数を組み合わせて、商品名を出してみたいと思います。
=INDEX($A$2:$D$6,MATCH(A9,$D$2:$D$6,0),2)で、求められるよ。説明するね。
うわー、ややこしそう。
ステップ1
まずはINDEX関数を使います。
セルB9に「=INDEX(」と入力してください。
ステップ2
次に配列、元になるデータの範囲ですね。
今回は商品一覧の表になるので、セルA2からD6までをドラッグします。
ステップ3
次の引数に移るので、「,(カンマ)」も入力してください。
ステップ4
次に行番号ですが、ここでMATCH関数の出番です!
「MATCH(」と入力して、MATCH関数を書いていきましょう。
先ほど選んだ範囲の「上から数えて何行目」部分を、MATCH関数で出してやろうってことですね。
ステップ5
おさらいしておくと、MATCH関数関数は「=MATCH(この値は,この中の何行目?,照合の種類)」でした。
商品Noを手掛かりに商品名を探すので、「この値は」の部分は、商品Noが書かれたセルA9ですね。
セルA9をクリックして、「,(カンマ)」を入力してください。
ステップ6
次に「この中の」の部分です。
検索値が商品Noなので、商品Noが書かれたセルD2~D6が該当しますね。
セルD2~D6をドラッグしてください。
ステップ7
この範囲もズレると困るので、「F4キー」で絶対参照にしておきましょう。
そして「,(カンマ)」。
ステップ8
次に照合の種類です。
コレ、簡単に言うと完全一致するものでいいのか、近い値のものでいいのかってことなんです。
今回は、1と2は近いから2でもいっか!なんて言われても困るので、完全一致の「0」を選びましょう。
今回は、1と2は近いから2でもいっか!なんて言われても困るので、完全一致の「0」を入力しましょう。
これでMATCH関数部分は終わりなので「)(カッコ閉じ)」します。
また、INDEX関数の行番号が指定できたので、「,(カンマ)」も入力します。
ステップ9
最後はINDEX関数の列番号です。
最初に選んだ範囲(A2:D6)の、左から数えて何列目の値を知りたいか?ということですね。
今回は商品名を知りたいので、左から数えて2列目、つまり「2」と入力します。
完成!
長い道のりでしたが、ようやく式が完成したので、「)(カッコ閉じ)」を入力して、エンターキーを押してください。
無事、商品Noから商品名を検索できました!
長かった……
お疲れさま!
オートフィルしてみると、他の商品名も一括で検索できましたね!
MATCH関数とINDEX関数の組み合わせを動画で見る
これで、検索値が検索範囲の左端になくても、値を検索できますね!
それでは、お疲れさまでした!
- INDEX関数とMATCH関数を組み合わせて、VLOOKUP関数の検索値が左になくてもできるVerになる
- =INDEX(配列,MATCH(検査値,検査範囲,照合の種類),列番号)
ディスカッション
コメント一覧
まだ、コメントがありません