• 公開日:

ExcelのVLOOKUP関数とMATCH関数を組み合わせる方法

この記事では、ExcelのVLOOKUP関数とMATCH関数を組み合わせる方法をご紹介します。

VLOOKUP関数の列番号にMATCH関数を指定することで、手動で列番号を修正したりエラーが発生する手間をなくすことができます。

以下では、適切な位置を固定して数式をコピーした際に自動で必要な項目(列)を取得する数式をご紹介します。

ExcelのVLOOKUP関数とMATCH関数を組み合わせる方法

VLOOKUP関数とMATCH関数を組み合わせることで、列番号の弱点を克服することができます。

VLOOKUPの列番号の弱点

上記の画像の左側の表のように、VLOOKUP関数の列番号は数式をコピーした際に可変しないので、同じ値が表示されてしまいます。抽出したい列を選択するには、手動で列番号を入れ替える必要があります。

また、上記の画像の右側の表のように、列を削除した際に列番号(例:5)が範囲外になってしまうと、#REF!エラーが表示されてしまいます。

VLOOKUP関数とMATCH関数を組み合わせることで、上記に記載したようなVLOOKUP関数の弱点を解消することができます。

以下で手順をご紹介します。

検索値を入力する

上記の画像のような抽出したいデータが複数列にあるデータを用意します。

この際、参照する表と抽出する表の見出し行の列数や順番を必ず同じにしてください。

A9セルに検索値(例:RJ03)を入力します。

数式を入力する

B9セルに「=VLOOKUP($A9,$A$1:$E$6,MATCH(B$8,$A$1:$E$1,0),FALSE)」を入力して、Enterを押します。

上記の数式は、VLOOKUP関数の列番号にMATCH関数を指定することで、検索値(例:修繕計画)が範囲(例:A1セルからE1セル)の左から数えて何番目(例:2列目)にあるのかを取得することができます。

ただし、見出し行の列数や順番が異なると正しい結果が取得できないのでご注意ください。

MATCH関数は特定の条件に当てはまる検査値が、範囲の何番目にあるのかを相対的に求めます。書式は「=MATCH(検査値,検査範囲,[照合の型])」です。

引数や使い方の詳細は、以下の記事でご紹介しています。

ExcelのMATCH関数の使い方|検索値の範囲内での相対的な位置を返す

オートフィルする

B9セルに「更衣室増築」が表示されました。

B9セルのフィルハンドルをドラッグして数式をコピーします。

結果が表示された

すべての結果が表示されました。

上記の画像の範囲はE9セルの結果を取得するための数式の引数の範囲です。

VLOOKUP関数の列番号にMATCH関数を指定することで、数式をコピーした際に検索値がずれて列番号を可変することができます。

上記の画像のように、抽出したデータが日付の場合は表示形式が数字になってしまうので、表示形式を変更していきます。

日付形式で表示する

表示形式を変更したいセル(例:D9セルとE9セル)を選択します。

ホームタブ、③数値の書式の下矢印、④短い日付形式の順に選択します。

結果が表示された

数字になっていた日付を日付形式で表示することができました。

INDEX関数とMATCH関数を組み合わせる方法

VLOOKUP関数の使い方を検索すると、INDEX×MATCH関数の組み合わせを紹介しているサイトが多くあります。

INDEX×MATCH関数の組み合わせは、検索列を左端にしたり検索列から抽出列を含むすべてのデータを範囲指定したりするVLOOKUP関数のような制約がないため、より柔軟な検索をすることができます。

使用している表やリストによっては使い分けると便利です。

INDEX×MATCH関数の詳細は以下の記事でご紹介しています。

ExcelのINDEX関数とMATCH関数を組み合わせた使い方