オーロラさんの勉強帳

SESの客先常駐勤務。データベース、Excel、Excel VBA、ネットワーク、LinuxなどIT関連のことを主に書いていきます。

【Excel】VLOOKUP関数 列番号をMATCH関数で取得する

この記事ではVLOOKUPの列番号を指定する引数をMATCH関数を使う方法を紹介します。Twitterで見てこんな方法があるんだと驚きでした。

 

実際に以下のようなデータで、VLOOKUP関数とMATCH関数を組み合わせて、利用者IDに対応する利用者名、役職CDを取得してみましょう。

f:id:auroralights:20201128113732p:plain

 

結論から言うと、VLOOKUP関数の列番号部分をMATCH関数で取得する数式は以下のようになります。

 

・利用者名の取得

=VLOOKUP(H3,$B$2:$F$12,MATCH($I$2,$B$2:$F$2,0),FALSE)

・役職CDの取得

=VLOOKUP(H3,$B$2:$F$12,MATCH($I$2,$B$2:$F$2,0),FALSE)

f:id:auroralights:20201128114056p:plain

 

では少し詳しく見てみましょう。

f:id:auroralights:20201128114249p:plain

利用者名をVLOOKUPで取得する場合を考えましょう。

列番号を指定して値を取得する場合は、以下のようになります。

H3の値をセル範囲B2:B12内で検索し、完全一致した行に対してB:Fの2列目の値を返します。

f:id:auroralights:20201128194723p:plain

 

列番号をMACTH関数で取得する場合は、以下のようになります。

VLOOKUP関数の列番号をMATCH関数で取得しています。

f:id:auroralights:20201128194747p:plain

 

MATCH関数部分は、以下のようになっています。

列番号の部分をMATCH関数を使って、セル「$I$2」(利用者名)がセル範囲「$B$2:$F$2」内の何列目かを取得しています。

f:id:auroralights:20201128195035p:plain

 

MATCH関数については、過去記事を参照してください。 

auroralights.hatenablog.com

 

どんなときに使える?

私がしている業務の中では、元データの列数が多い場合に、VLOOKUPで列番号を指定するのが面倒な時に使えそうです。

データベースから列数が十数列~数十列あるようなデータを取ってきて、VLOOKUPでデータを取るときに使えると思います

 

データを取得する列が何列目かは、列数が多いと以下のように列を選択するときに7Cなどで何列目かを見たり、あらかじめ何列目のデータか分かりやすいように項番を振って列番号を入れることがあります。

<列を選択し、何列目かを確認>

f:id:auroralights:20201128200444p:plain

<データの列名の上に何列目か項番を振る>

f:id:auroralights:20201128200541p:plain

 

MATCH関数を用いればそういった手間がなく、取得したい列名が元データの何列目かを取得できるので便利ですね。