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など加算減算することで対応することが可能です。