オーロラさんの勉強帳

SESのロースキル客先常駐勤務。データベース、Excel、Excel VBA、ネットワーク、LinuxなどIT関連のことを主に書いていきます。

【Excel】INDEX関数とMATCH関数を組み合わせて使う ~INDEX関数・MATCH関数入門~

INDEX関数とMATCH関数を組み合わせて、使いこなすことを目的とした全3回の第3回目の記事です。いよいよ『INDEX関数』と『MATCH関数』を組み合わせて使う方法を紹介します。

 

  • 1回目:INDEX関数
  • 2回目:MATCH関数 <今回>
  • 3回目:INDEX関数とMATCH関数の組み合わせ <今回>


1回目の『INDEX関数』の使い方は以下の記事を参照ください。

 

2回目の『MATCH関数』の使い方は以下の記事を参照ください。

 

 

INDEX関数の復習

INDEX関数は、対象範囲の行番号・列番号を指定して、該当の行番号・列番号のデータを返す関数です。
構文は以下の通りです。

 

構文:INDEX(対象範囲,行番号,列番号)

 

MATCH関数の復習

MATCH関数は、対象範囲の内で検索値が何行目もしくは何列目にあるかを返す関数です。

 

構文:MATCH(検索値,対象範囲,照合型)

※照合型は「0」を指定すると、検索値と等しい最初の値の行番号もしくは列番号を返します。基本は「0」を指定します。


INDEX関数とMATCH関数でできること

INDEX関数の行番号、列番号の引数にMATCH関数を利用することで、VLOOKUPよりも便利に検索して値を返すことができます。

MATCH関数で行の値(検索値)、列の値(検索値)を指定して、行番号、列番号を取得。INDEX関数ではMATCH関数で取得した行番号、列番号を使って、対象範囲の中のデータを返します。

 

INDEX関数とMATCH関数の使用例

f:id:auroralights:20200814223358p:plain

上の例では2020年10月の大阪のデータを取得しています。
MATCH関数でH4(2020年10月)がB4:B11の何番目にあるか行番号を取得。
I4(大阪)がC3:F3の何番目にあるか列番号を取得。
INDEX関数で対象範囲(C4:F11)内でMATCH関数で取得した行番号、列番号を用いて値を取得しています。
 

INDEX関数とMATCH関数の使用例

INDEX関数とMATCH関数を使って、商品CD「1002」の「商品名」や
INDEX関数とMATCH関数を使って、商品CD「2004」の「商品名」、「価格」を求めてみました。

f:id:auroralights:20200814230604p:plain

 

■商品CD「1002」の「商品名」を求める関数は以下の通りです。

=INDEX(B18:D25,MATCH(F18,B18:B25,0),MATCH(G18,B17:D17,0))

INDEX(対象範囲,MATCH(検索値,対象範囲,照合型),MATCH(検索値,対象範囲,照合型))で求めていいます。

MATCH関数でF18(1002)がB18:B25の何番目にあるか、G18(商品名)がG17:D17の何番目にあるか求めて、行番号、列番号を取得します。

INDEX関数では対象範囲(B18:D25)で、MATCH関数で求めた行番号、列番号のデータを求めています。

 

■商品CD「2004」の「商品名」、「価格」を求める関数は以下の通りです。

商品名=INDEX($B$18:$D$25,MATCH($F$22,$B$18:$B$25,0),MATCH(G21,$B$17:$D$17,0))

価格
=INDEX($B$18:$D$25,MATCH($F$22,$B$18:$B$25,0),MATCH(H21,$B$17:$D$17,0))

 

どちらもMATCH関数で行番号、列番号を取得し、INDEX関数の対象範囲で取得した行番号・列番号からデータを返しています。
絶対参照を使うことで、商品名の数式をそのままコピーして価格を求めました。

 

 

VLOOKUPではできない検索値の左側のデータを取得する

VLOOKUPは検索値が範囲の最も左側の列から値を返す関数のため、検索値より左側のデータは返せません。(そもそも最も左側に検索値のデータと一致するデータが無ければエラーとなります) 

INDEX関数では行番号、列番号を指定して値を返すので、検索するデータの左側のデータも取得することが可能です。

 

f:id:auroralights:20200814231806p:plain

上の例では、「行」が「1002」で「列」が「部門」のデータを返しています。

=INDEX(B3:D10,MATCH(F3,C3:C10,0),MATCH(G3,B2:D2,0))


最後に

INDEX関数とMATCH関数の基本的な使い方は以上となります。
実際の業務では、INDEX、MATCH関数とさらに他の関数を使って利用することや、他の関数と組み合わせて使っているのを目にすることの方が多いかと思います。

それでも、INDEX関数、MATCH関数の基本的な使い方を知っていれば理解できるのも早いと思いますので、覚えておいて、使ってみて自分のものにしましょう。