XLOOKUPに負けない!INDEX & MATCH関数の動的活用術
導入
INDEX関数は長年にわたってExcelユーザーに支持されてきた古いながらも強力な関数です。その最大の特徴は、データの位置関係に依存せずに、任意の値を柔軟に取得できる点です。特に、MATCH関数と組み合わせることで動的な参照を実現でき、多くの業務で効率化を図るツールとして活用されてきました。しかし、XLOOKUPの登場により、INDEX関数の役割は次第に薄れていると感じる方もいるかもしれません。これは事実ですが、INDEX関数は配列を想像しながら式を組み立てるという思考回路は、スピル関数やPower Queryを扱う現代Excelにおいて非常に役に立ちます。
本資料では、INDEX関数とMATCH関数の基本的な使い方から、その組み合わせで可能になる高度な活用例、さらにはXLOOKUPによる代替方法までを詳しく解説します。これを通じて、INDEX関数の可能性を再評価し、どのように現代のExcel作業においても有効活用できるかを見つめ直していきます。また、XLOOKUPが提供する新たな利便性についても触れ、適材適所で両者を使い分けるための指針を提供します。
INDEX、MATCH関数のおさらい
INDEX関数は、特定の配列または、範囲から、指定した行番号と列番号で指定された要素の配列を返す関数です。ここで「返す」とは、数学でいうところの関数で計算結果を出すという意味です。
関数の入力方法は、
=INDEX(配列または範囲, 行番号, 列番号)
です。引数が3つあります。ここで引数とは、入力項目という意味です。行または列が1つしかない場合は、引数を省略できます。
次に使用例を示します。下の例では、テニスのグランドスラムの優勝者を年ごとに並べています。この例の中でB1セルには
=INDEX(B4:E14,2,3)
を入力しています。B4:E14は、優勝者の名前の配列です。その中で、2行目(第1引数)、3列(第2引数)の交差点の値(ここではあえて値と言います)を返す式となっています。この表で、2行目は2015年、3列目はウィンブルドンでつまり2015年のウィンブルドン優勝者であるノバク・ジョコビッチが返されます。ここでのポイントは、行番号と列番号はExcelシート内の番号ではなく、配列の中の番号ということです。つまりD5セルを表す、5行4列ではないということです。
MATCH関数
次にMATCH関数です。MATCH関数は任意の行範囲や列範囲の中で、指定した値を検索し、その範囲内での位置を返してくれる関数です。
関数の入力方法は、
=MATCH(検査値, 検査範囲, [照合の型])
です。3つ目の引数は、省略可能で省略した場合は、「完全一致」が適用されます。以下はINDEX関数の例と同様のテニスのグランドスラムの優勝者を年ごとに並べた表です。今、B1セルには
=MATCH("ウィンブルドン",B3:E3)
という式を入れています。「ウィンブルドン」を検索値(第1引数)、グランスラムの名前を並べたB3:E3を検索範囲(第2引数)に選択します。そして、第3引数として完全一致(つまり、0)を指定すると、3を返します。つまり、ウィンブルドンは、横に並べたグランドスラムの中で3番目に出てきているということです。
INDEX関数とMATCH関数の組み合わせ
上記から
=INDEX(B4:E14,2,3)
の第3引数は
=MATCH("ウィンブルドン",A3:E3)に置換しても同じ結果が出ることがわかります。なぜなら
=MATCH("ウィンブルドン",A3:E3)
の答えは3で
=INDEX(B4:E14,2,3)
の第3引数も同じ値だからです。
同様に
=INDEX(B4:E14,2,3)
の第2引数もMATCH関数に置き換えることができます。つまり、
=MATCH("2015年",A4:A14,0)
です。ここで特筆すべきはMATCH関数が縦方向にも使えるという点です。
これらを合わせると
=INDEX(B4:E14,2,3)
は
=INDEX(B4:E14,MATCH("2015年",A4:A14,0),MATCH("ウィンブルドン",B3:E3,0))
と書き直すことができます。
動的な式の導入
次にこの式は動的にすることができます。この式で検索値を式の外に出してセルに入力し、そのセルをMATCH関数の引数に設定します。これをすると、検索値を式の外で変更することができ、動的なモジュールを作ることができます。例えば、開催年をE2のセルに置き、グランドスラム名をD2に置き換えます。そして、それぞれのセルに入力規則を設定してプルダウンをつけてあげれば、検索モジュールが出来上がります。(式はB1に入力されています。)
このように、INDEX関数とMATCH関数を使うと、自由度の高い検索機能を実装できます。また、上記の例のように、引数を関数に置き換えて、さらにその関数の引数を関数外のセルに出すというのは、動的なEXCELファイルと作るうえでとても大事な考え方です。ちなみにこの機能はXLOOKUPでも表現することは可能です。
INDEX関数とMATCH関数の可能性
ここまでINDEX関数とMATCH関数の基本的な使い方を説明してきました。ここからは、この2つの関数の組み合わせで広がる可能性について書いていきたいと思います。
ここから先は
¥ 100
この記事が気に入ったらチップで応援してみませんか?