Excel

【Excel】VLOOKUP関数で複数行、複数列の値を抽出する方法

スポンサーリンク

VLOOKUP関数で複数行、複数列の値を抽出する方法

VLOOKUP関数を使用する人は恐らく作業の効率化を必要としている人だと思います。

そうした人は「複数行の検索値それぞれに対して、複数列の情報を抽出したい」場合が殆どだと思います。

しかし、ただ縦や横にコピーしたのでは希望通りには動いてくれません。

この希望を叶えるにはVLOOKUP関数にちょっと手を加えてあげる必要があるので、その方法を解説します。

画像の様に左の表から、右の表へ一部の情報を抜き出したい場合の関数は以下のようになります。
=VLOOKUP($L4,$C$4:$I$17,COLUMN(B$1),FALSE)

ポイントは2点
・VLOOKUP関数はあまりオートフィルを使うことを想定されていない関数なので、オートフィルによって参照したいセルの値がズレてしまうことを防ぐ必要がある。
・VLOOKUP関数だけでは、やりたいことができないのでCOLUMN関数も使用する。

 1 検索値
L列で指定されている値(青森県など)を指定します。
「=VLOOKUP(L4」と入力したいところですが、今回のケースでは後々オートフィルを使用するので、検索値の参照列が変化しないために列に「$」を付与します。
行は変化して欲しい部分なのでそのままにします。
=VLOOKUP($L4

 2 範囲
C4からI17までが検索範囲になります。
この部分もオートフィルで値がズレてしまうので「$」を付与して固定してしまいます。
=VLOOKUP($L4,$C$4:$I$17

 3 列番号
ここが最重要なポイント。
VLOOKUP関数の列番号はオートフィルでは通常、値が変化しません。
ですが、こちらとしては変化して欲しいのでCOLUMN関数を使用して一工夫を加えます。

なお、COLUMN関数で参照先を入力する際には注意が必要です。
ついつい参照先に「D4」と入れたくなりますが、今設定しようとしているVLOOKUP関数が検索範囲としている表は、手順2の範囲で指定した「C4からI17」の表になります。
そのため、列番号行番号ともに「C4からI17」の表を基準に考えます。

下の画像を参照していだたくとわかると思いますが、「C4からI17」の表での検索開始となる列番号は赤文字部分から「B1」となります。

COLUMN関数を使用したことでオートフィルが有効になっているので、オートフィル時の値の変化に対応させます。
列番号では「行」が変化して欲しくないので「B$1」となります。
=VLOOKUP($L4,$C$4:$I$17,COLUMN(B$1),FALSE)

 4 オートフィルで表に反映させる
N4セルに数式の入力が完了し、正しく値がとれているのを確認したらオートフィルを使ってすべての表を埋めてしまいましょう。

最後に

数式の中身が長くなるとどうしてもわかりにくくなるので、関数の中身は慣れるまでは誰かのコピペで良いと思います。
ですが、引数を一つ一つバラして確認してみると何をやっているのか見えてきたりするので、少しずつでも理解していきましょう。

スポンサーリンク

-Excel
-, ,