計算式のコピーでvlookup関数の列番号をずらす簡単なテクニック
エクセルでvlookup関数を使う場合ネックになるのが「列番号」の存在です。
例えば、A2セル~D5セルまでに大元の表があって、その内容をvlookup関数で抽出したいという場合を考えてみます。
このように、G3セルに通常のvlookup関数を使った計算式を入れると、右にコピーしても列番号が変化しないため、次のような、おかしい計算結果になってしまいます。
解決方法を紹介していきます。
この記事の目次
そもそもvlookup関数を使わない
vlookup関数にこだわらずindex関数+match関数を使ってもいいのであれば、次のような計算式を入れると、計算式のコピーができます。
=index(B$3:B$5, match($F3, $A$3:$A$5, 0))
変化に強い表を作りたい場合には、この方法が一番素直で無理がない方法だと思います。
ただし、index関数・match関数の使い方を覚えてなければいけないので覚えることが増えます。
また、vlookup関数よりも知られていないので、多くの人が使うエクセルシートで使ってしまうと混乱の元になるかもしれません。
vlookup関数を使う場合
vlookup関数を使わざるを得ない状況であれば、次のような解決方法があります。
別のセルに列番号を入力しておく
例えば、次の図の1行目のように、空いているセルに対応する列番号を入力します。
vlookup関数の列番号を入力する箇所に、そのセルを指定することで、計算式のコピーに対応することができます。
=vlookup($F3, $A$3:$D$5, G$1, FALSE)
column関数を使って、別のセルに列番号を入力する
ただ、これだけだと、列を挿入した場合に対応ができなくなります。
column関数を使って、列番号を入れておくことで列の挿入にも対応できるようになります。
=column(H1)-column($G1)+1
※同じcolumn関数を使うのでも、H1セルに「=Column(H1)-6」というような計算式を入れてしまうと、表全体を左右にずらしたい場合に対応できなくなります。ご注意ください
まとめ
変化に強い表を作りたい場合には、vlookup関数より、index関数+match関数のほうが望ましいです。
ただ、vlookup関数だけでも、ある程度の柔軟性は持たせられます。
状況に応じて、使い分けてください。