VLOOKUP関数の代わりに?INDEX関数とMATCH関数の使い方【代替関数】

スポンサーリンク

Vlookup_Index,Match

今回の記事では、最強に便利と紹介したVLOOKUP関数と同じように条件に合う特定の値を取り出すことができ、代わりの関数としても使うことが出来る、

INDEX関数とMATCH関数

についてそれぞれ解説します。

INDEX、MATCH関数はINDEX関数で範囲を指定し、MATCH関数で条件に一致するデータの行番号を検索するという流れでVLOOKUP関数と同じような働きをさせることができます。
計算式は関数を入れ子(ネスト)にさせたりと複雑になってしまいますが、VLOOKUP関数が使えない時に代替関数として覚えておくととても便利です。

どのような場合にVLOOKUP関数の代わりとして使えるかと、どのように計算式を作るかはこの先の記事で詳しく解説します。

この記事を読むと分かること
・INDEX関数について
・MATCH関数について
・INDEX、MATCH関数の使い方

↓記事のまとめページに戻るにはこちら↓

↓VLOOKUP関数についてはこちらを参照ください↓
【実践】最強の便利関数?VLOOKUP関数
↓office365の方はXLOOKUP関数という代替関数もあります↓
VLOOKUP関数の新しい代替関数、XLOOKUP関数とは?
↓INDEX、MATCH関数をもっと使いこなしたい方はこちらも合わせてご覧ください↓
【応用】INDEX、MATCH関数で複数の条件を指定する方法とは?
スポンサーリンク

1.VLOOKUPとの使い分けはどのようなときか

VLOOKUP関数と同じように特定の値に対する値を取り出すことができるINDEX関数とMATCH関数ですが、どのようなときに使い分ければ良いのでしょうか?

VLOOKUP関数を使いなれている方なら、困ったことがあると思いますが、VLOOKUP関数は検索する列が範囲の一番左に無いと検索をすることができません。

どういうことかというと、下の表を使って説明していきます。

f:id:excelblog:20200125162725p:plain
表1

VLOOKUP関数の説明で使った表を少し変えて、会社名を入れると取引先コードを表示する表を作ったとします。
しかし、表をよく見るとマスタの取引先コードが会社名より左側にあります。
ここからはおさらいですが、VLOOKUP関数は、

=VLOOKUP(検索値,範囲,列番号,検索方法)

という組み合わせでできています。

↓詳しくはこちらを参照ください↓
【実践】最強の便利関数?VLOOKUP関数 – Excel時短ワザ

列番号は、検索値がある列から何列目という数字を入力しますが、”1”以上の数字を入力しなければいけません。
そのため、”0”やマイナスの数値を入力することができないので、検索値と同じ列か右側にある列しか参照することができません。
そこで役に立つのがINDEX関数とMATCH関数になります。

こちらを使うことで、データの位置に左右されず参照をすることができます。
それなら常にINDEX関数とMATCH関数を使った方がいいのでは?と思われるかもしれませんが、計算式のシンプルさなどVLOOKUP関数の方が優れている点もあるので、状況に応じて使い分けていただければと思います。

2.INDEX関数とは

それではまずは、INDEX関数から紹介していきたいと思います。

f:id:excelblog:20200125165122p:plain表2

計算式のガイドを見ると何やら複雑そうな文字がたくさん出てきました。
文字で見ると複雑ですが、表を使って説明すると分かりやすいです。

f:id:excelblog:20200125165827p:plain表3
=INDEX(A8:D13,3,4)

まず、参照の部分にデータの範囲を入力します。ここではA8:D13の範囲です。
参照の一番左上のセルから、指定した行番号、列番号分だけ移動させたセルの値を参照します。
ここでは、A8セルから下に3行、右に4列動かした先の”千葉県”の値が返ってきました。
決めた範囲の指定した行と列分移動した先の値を参照するのが、INDEX関数です。

後で説明をしますが、実際にVLOOKUP関数のような使い方をする場合は、

=INDEX(参照,MATCH関数,列番号)

という使い方をします。
それでは次にMATCH関数について紹介します。

↓INDEX関数と似た使い方ができるOFFSET関数についてはこちらを参照ください↓
VLOOKUPとネストで範囲が可変に!OFFSET関数の使い方とは?

3.MATCH関数とは

MATCH関数とは検索値がその表の中のどこにあるかを検索することができる関数です。

f:id:excelblog:20200125171251p:plain表4

こちらも何やら複雑そうな文字がたくさん出てきました。
こちらも表を使って説明していきます。

f:id:excelblog:20200125171705p:plain表5
=MATCH(F8,D8:D13,0)

まず、検査値の部分には、検索したいセルもしくは数値を直接入力します。
※上の表ではF8の千葉県です。
次に検査範囲に検索したい範囲を入力します。
上の表では、所在地の列の何番目に千葉県があるか知りたいので、D8:D13の範囲を指定します。

最後の照合の種類ですが、こちらはVLOOKUP関数と同じ使い方をする場合、完全一致を使ってください。
※VLOOKUPのFALSEの部分です
上の表の場合、千葉県はD8から3行目にあるので”3”という数値が返されます。
今度は下の業種が何列目かを検索してみましょう。

f:id:excelblog:20200125172744p:plain表6
=MATCH(F9,A8:D8,0)

今度は、業種という項目が検査範囲の何列目にあるか確認する計算式です。
この場合、業種はA8から数えて3列目にあるので”3”という数値が返されます。
それでは、いよいよINDEX関数とMATCH関数を使って、VLOOKUP関数のような使い方をしてみましょう。

↓MATCH関数について詳しい記事はこちら↓
検索値の位置を調べる!MATCH関数の使い方とは?

4.INDEX、MATCH関数の使い方

上でも紹介したように、計算先は、

=INDEX(参照範囲,MATCH(検索値,検索する列,0),列番号)

というように入力します。

青い部分がINDEX関数赤い部分がMATCH関数です。
MATCH関数で返される数値が行番号になります。
それでは、実際に説明しながら入力していきましょう。

f:id:excelblog:20200126132328p:plain表7

上の表は、セルB1に会社名を入力すると、下のマスタを参照し、セルA3からA5に内容が自動的に入力されるというものです。

VLOOKUP関数のときとほとんど同じ表ですが、マスタの取引先コードが会社名より左にあるため、VLOOKUP関数を使うことができません。

f:id:excelblog:20200126132105p:plain表8

最初に、セルB3にINDEX関数の部分を入力します。

まずは、検索範囲を選択するので、マスタ全体を選択します。※この時フィルをかける時のために、検索範囲には$をつけて絶対参照をしておきます。

f:id:excelblog:20200126132942p:plain表9

次に、コンマを打ち、MATCH関数の部分を入力します。
MATCH関数は、検査値のところに検索値(今回はB1セル)を入力し、検査範囲の部分に会社名が入っているマスタの列全体を指定します。
※こちらもそれぞれ$をつけて絶対参照しておきましょう。
照合の種類は、上の説明の通り、”0”を入力します。

f:id:excelblog:20200126133657p:plain表10

MATCH関数を閉じ、コンマを打ったら、最後は列番号を指定します。
INDEX関数で選択した範囲の中で取引先コードは1列目にあるので、”1”と入力します。

f:id:excelblog:20200126134009p:plain表11

出来上がった計算式は、

=INDEX($A$9:$D$13,MATCH($B$1,$B$9:$B$13,0),1)

カッコを閉じ、計算式を完成させると、無事、○○工業の取引先コードを入力することができました。

f:id:excelblog:20200126134350p:plain表12

後は、業種と所在地のセルまでフィルで計算式をコピーし、計算式の最後の参照する行の部分をそれぞれ業種と所在地の列番号に変更します。
上の表では、所在地を入力したいので列番号に”4”を入力します。

f:id:excelblog:20200126134702p:plain表13

無事、業種と所在地も入力することができました。


いかがだったでしょうか?
VLOOKUP関数と比べると少し計算式が複雑ですが、検索したい列の場所に左右されないというのは大きなメリットです。
VLOOKUP関数が使えない場合にぜひ使用してみてください。
また、この記事の応用としてINDEX、MATCH関数で複数の条件を指定する方法を解説した記事も用意しました。
もっとINDEX、MATCH関数を使いこなしたいと考えている方はぜひそちらもお読みください。
最後までお読みいただきありがとうございました。

↓続きはこちら↓

【応用】INDEX、MATCH関数で複数の条件を指定する方法とは?
INDEX、MATCH関数を使っていて複数の条件を指定したいと思ったことはありませんか?INDEX、MATCH関数は計算式を変えることで複数の条件の指定を簡単にすることができます。この記事で詳しく解説していますのでぜひご覧ください。
↓INDEX、MATCH関数をもっと使いこなしたい方はこちらも合わせてご覧ください↓
【応用】INDEX、MATCH関数で複数の条件を指定する方法とは?
タイトルとURLをコピーしました