今回は、ExcelのINDEX関数とMATCH関数を組み合わせて、柔軟にデータを検索するテクニックを紹介します。
INDEX関数とMATCH関数とは
Excelで指定した条件に合うデータを表の中から探し出す際、多くの方がVLOOKUP関数を利用していると思います。VLOOKUP関数は便利ですが、「検索値が表の最も左側の列になければならない」という制限があります。この制限を気にせずに、表のどの列にあるデータでも検索できるようにするのが、INDEX関数とMATCH関数を組み合わせる方法です。
この2つの関数は、それぞれ異なる役割を持っています。
INDEX関数は、指定した範囲の中で「上から何行目、左から何列目にあるデータ」を取り出す機能を持っています。
一方、MATCH関数は、探したいデータが指定した範囲の中で「上から何番目(あるいは左から何番目)にあるか」という位置を数字で教えてくれる機能です。
これらを組み合わせることで、「MATCH関数で見つけた行番号をINDEX関数に渡して、目的のデータを取り出す」という検索が可能になります。
それぞれの関数の基本的な書き方
組み合わせる前に、まずは個別の関数の仕組みを整理しておきます。
INDEX関数の基本
`=INDEX(配列, 行番号, [列番号])`
- 配列:データを取り出したい範囲を指定します。
- 行番号:その範囲の上から何行目のデータを取り出すかを数字で指定します。
- 列番号:その範囲の左から何列目のデータを取り出すかを指定します。(1列だけの範囲を指定した場合は省略可能です)
MATCH関数の基本
`=MATCH(検査値, 検査範囲, [照合の型])`
- 検査値:探したいデータ(キーワードや数値など)を指定します。
- 検査範囲:データを探す対象となる1列(または1行)の範囲を指定します。
- 照合の型:通常は完全一致で探すための「0」を指定します。
INDEX関数とMATCH関数を組み合わせる手順
具体的な例として、社員名簿から「社員番号」を使って「氏名」を検索するケースを想定します。社員番号がB列にあり、氏名がA列にある場合、氏名が左側にあるためVLOOKUP関数は使えません。ここでINDEX関数とMATCH関数の出番となります。
手順としては以下のようになります。
- 結果を表示したいセルを選択します。
- まず、取り出したいデータがある範囲(氏名の列)をINDEX関数の配列として指定します。例:`=INDEX(A2:A10,`
- 次に、行番号を指定する部分にMATCH関数を入れます。探したい社員番号が入力されているセル(例:D2)を指定し、それを探す範囲(社員番号の列)を指定します。例:`MATCH(D2,
B2:B10, 0)` - これらを組み合わせると、数式は以下のようになります。
`=INDEX(A2:A10, MATCH(D2, B2:B10, 0))`
この数式は、「D2に入力された社員番号が、B2からB10の範囲で何番目にあるかをMATCH関数で調べ、その番号を元にA2からA10の範囲から該当する氏名をINDEX関数で取り出す」という処理を行っています。
INDEX関数+MATCH関数のメリット
この組み合わせを使うことで、データ処理においていくつかの利点があります。
列の順序に縛られない
VLOOKUP関数の場合、検索値のある列が必ず一番左に配置されている必要があります。元の表のレイアウトを変更できない場合、検索用の一時的な列を追加するなどの手間が発生することがあります。しかし、INDEX関数とMATCH関数の組み合わせであれば、検索値が表の右側にあっても、目的のデータが左側にあっても問題なく検索できます。
列の追加・削除に強い
VLOOKUP関数では「左から何列目か」を数字で直接指定するため、表の途中に新しい列を挿入したり、不要な列を削除したりすると、数式を修正する必要が生じます。INDEX関数とMATCH関数の組み合わせでは、必要な列の範囲だけをピンポイントで指定するため、他の列が追加・削除されても数式が壊れにくく、メンテナンスが楽になります。
行と列の両方で検索する(クロス検索)
少し応用になりますが、INDEX関数の「行番号」と「列番号」の両方にMATCH関数を組み込むことで、縦方向と横方向の2つの条件に一致するデータを抽出するクロス検索も可能になります。料金表から縦軸(サイズ)と横軸(重量)を元に運賃を導き出すような場面で重宝します。
まとめ
INDEX関数とMATCH関数の組み合わせは、最初は数式が長く見えて少し難しく感じるかもしれませんが、それぞれの役割を理解すればスムーズに活用できると思います。データの配置にとらわれずに柔軟な検索ができるため、Excelでの業務をより快適に進める助けになるでしょう。VLOOKUP関数で対応しきれない場面に遭遇した際は、ぜひこのテクニックを試してみてはいかがでしょうか。