[Excel/スプレッドシート] 特定の検索値からデータを抽出する index / match 関数

Excelやスプレッドシートで特定の値をキーにしてデータを抽出する方法として vlookup 関数が有名ですが、vlookup関数の一番の弱点は
「検索キーのリストが一番左側にないとダメ」
ってところです。

vlookup / hlookup 関数の後継関数として xlookup 関数が発表されていますが、現状使える環境はごく一部のテストユーザー向けです。

Microsoft、新しいExcel関数「XLOOKUP」を発表 ~「VLOOKUP」や「HLOOKUP」の後継 – 窓の杜

既存関数の index 関数 と match 関数 でvlookup 関数の弱点を克服した使い方ができますので、覚えておいて損はないと思います。

index / match 関数によるデータ抽出

結論から先に 使い方は

=index("[抽出したいデータの範囲]", match("[検索キー]", "[キーを検索する範囲]", 0))

です。

それぞれの関数の詳細な説明は省きますが、match関数で、検索キーがある行番号を取得して、index関数で取得した行番号に対応するデータを返すといった動きになります。

vloock関数のように、検索キーの場所を選ばないし、取得する列の順番を数える必要もありません。

抽出したいデータ範囲とキーを検索する範囲をそれぞれ名前を付けて、それ上部の式に当てはめればサクっとデータ抽出ができると思います。