8/17/2019

Excel。今再びのVLOOKUP関数 引数:列番号をいちいち修正するのは面倒。【VLOOKUP】

Excel。今再びのVLOOKUP関数 引数:列番号をいちいち修正するのは面倒。

<VLOOKUP+COLUMN関数>

次のような表があります。

A2に氏名を入力すると、その詳細データがB2:F2まで抽出されるようになっています。

数件ならば、直接見つけて、コピー&ペーストしてもいいのですが、件数が増えてくると効率が悪化します。

そこで、氏名を入力したら抽出するようにしたいわけです。

そこで、登場するのがVLOOKUP関数です。

A2に氏名を入力してから数式を作っていきましょう。ダミーデータを入力しないまま作成すると、エラーが発生して、慣れていないとビックリしますので、注意が必要ですね。

また、数式は、手入力でもOKですが、今回はダイアログボックスで作成していきます。

B2をクリックして、VLOOKUP関数ダイアログボックスを表示しましょう。

検索値には、氏名を入力するセルですので、A2を設定します。

範囲ですが、A5:F16を範囲選択します。データですが、見出し行は不要ですので、範囲から除外します。

オートフィルを使って数式をコピーしますので、絶対参照を忘れずに、$A$5:$F$16と設定します。

列番号ですが、引数の範囲で選択した範囲から、抽出したい範囲は左から何列目なのかをExcelに教える必要があります。

今回は、国語の点数を抽出したいので、左から2列目にデータがあるので、列番号は「2」と設定します。

検索方法は、完全一致ですので、Falseと設定します。
Excelでは、False=0なので、0(ゼロ)でもOKですね。

B2の数式は、
=VLOOKUP(A2,$A$5:$F$16,2,FALSE)
では、横方向にオートフィルを使って数式をコピーしてみましょう。

【エラーが表示される:2つの修正箇所がある】

残念ながら、エラーが表示されてしまいました。
原因は、2か所あります。

F2の数式を確認してみましょう。
=VLOOKUP(E2,$A$5:$F$16,2,FALSE)

1つ目は、検索値ですね。E2になっています。A2でなければいけません。
ここは、行を固定した、複合参照で設定する必要がありました。

2つ目は、列番号。
「2」のままですね。これでは、国語の点数を抽出しっぱなしになります。

オートフィルを使って数式をコピーしても、自動的に3・4と加算してくれません。

2・3か所の数式を変更するだけならいいのですが、変更する数式が多くなると修正が面倒です。
何かいい方法はないのでしょうか?

そこで、列情報を算出することができる、COLUMN関数を使うことで対応することができます。

それでは、B2の数式を修正してみましょう。

VLOOKUP関数ダイアログボックスを再度表示しても構いませんが、手入力で直接数式を修正します。
=VLOOKUP(A2,$A$5:$F$16,2,FALSE)

=VLOOKUP($A2,$A$4:$F$16,COLUMN(),FALSE)
と修正します。

オートフィルを使って数式をコピーして確認してみましょう。

このように、エラーが表示されず、抽出することができました。

なお、今回は、たまたま2列目だったので、COLUMN()で大丈夫でしたが、列番号と合致するように調整が必要な場合は、COLUMN()+1など加算減算することで対応することが可能です。