VLOOKUP関数とMATCH関数で動的に値を取得する方法

本記事では、
VLOOKUP関数とMATCH関数を組み合わせて、
列番号を指定せずに動的に値を取得する方法を解説します。
VLOOKUP関数とMATCH関数の組み合わせ
ExcelのVLOOKUP関数は、
特定の値を検索し、その値が見つかった行の指定した列の値を返す便利な関数です。
しかし、通常、VLOOKUP関数は列番号を指定する必要があります。
これは、データが変更された場合や列が追加された場合には手間がかかります。
そこで、MATCH関数を組み合わせることで、
列番号を指定せずに動的に値を取得することが可能になります。
MATCH関数は、指定した値が配列内のどの位置にあるかを返す関数で、
これをVLOOKUP関数の列番号の部分に使用します。
例示
例えば、以下のような社員リストがあります:
列番号を指定せずに、
下記の社員リストから「田中」さんの「給与」を取得する方法を考えます。

解答
VLOOKUP関数とMATCH関数の使い方に自信のない方は以下を拝読してみてください。
- VLOOKUP関数のダイアログボックスを開いて、任意セルに次のように入力します
- 第2引数のMATCH関数は、手入力になります
※ダイアログボックスの使い方は巻末の参考記事をご拝読ください。

- [OK]を押すと、次のような関数式が入力されます。

関数式の構造解説
=VLOOKUP(“田中”, A1:D6, MATCH(“給与“, A1:D1, FALSE)
VLOOKUP関数は「田中」をA1:D6の範囲で検索し、一致した行の「給与」の列の値を取得します。
そして、列番号はMATCH関数を使用して、
A1:D1の中で「給与」が何列目にあるかを動的に取得します。
これにより、列の位置が変わっても正確に「給与」の値を取得できます。
さらに、以下のような動的処理も可能になります。
=VLOOKUP(“田中”, A1:D6, MATCH(“役職“, A1:D1, FALSE)
とすれば、「役職」を取得できますし、
=VLOOKUP(“田中”, A1:D6, MATCH(“部署“, A1:D1, FALSE)
とすれば、「部署」を取得できます。
列番号を指定せずに、動的に取得できています。
フォローアップ
ダブルクォーテーション
文字列は、半角のダブルクォーテーション(“)で囲みます。
例えば、”スポーツ”と”スポーツ以外”とします。
XLOOKUP関数との比較
また、ExcelにはXLOOKUP関数もありますが、これは列番号を指定せずに値を取得できます。
しかし、XLOOKUP関数は静的であり、列の位置が変わると結果も変わってしまいます。
その点で、VLOOKUP関数とMATCH関数の組み合わせは優れています。
最後に
VLOOKUP関数とMATCH関数を組み合わせることで、
列番号を指定せずに動的に値を取得することが可能になります。
これにより、データの変更や列の追加に対応することが容易になります。
Excelをビジネス現場で活用する際には、このテクニックをぜひ試してみてください。
解答付きサンプルデータ
解答付きサンプルデータが欲しい方は、下記からダウンロードしてください。
参考記事:
Excel関数を操作するための基本概念です。基本概念を理解すると、各関数の理解がより深まります。
構文に関する記事
Excel関数の引数と戻り値は何だっけ?という時に、役立つ記事です。
ダイアログボックスの使い方に関する記事
Excel関数名は何だっけ?VLOOKUP関数の使い方は何だっけ?という時に、ダイアログボックスを使うと便利です。
下記はそのダイアログボックスに関する記事です。
参照形式に関する記事
関数式をコピーする時はどうしたらいい? $マークは、どう付けたらいいだろう?
といった悩みをお持ちの方は以下をご覧ください。