計算式のコピーでvlookup関数の列番号をずらす簡単なテクニック

エクセルでvlookup関数を使う場合ネックになるのが「列番号」の存在です。

例えば、A2セル~D5セルまでに大元の表があって、その内容をvlookup関数で抽出したいという場合を考えてみます。

vlookupcolumn_1_1

このように、G3セルに通常のvlookup関数を使った計算式を入れると、右にコピーしても列番号が変化しないため、次のような、おかしい計算結果になってしまいます。

vlookupcolumn_1_2

解決方法を紹介していきます。

そもそもvlookup関数を使わない

vlookup関数にこだわらずindex関数+match関数を使ってもいいのであれば、次のような計算式を入れると、計算式のコピーができます。

G3セル:
=index(B$3:B$5, match($F3, $A$3:$A$5, 0))
vlookupcolumn_1_3

変化に強い表を作りたい場合には、この方法が一番素直で無理がない方法だと思います。

ただし、index関数・match関数の使い方を覚えてなければいけないので覚えることが増えます。

また、vlookup関数よりも知られていないので、多くの人が使うエクセルシートで使ってしまうと混乱の元になるかもしれません。

vlookup関数を使う場合

vlookup関数を使わざるを得ない状況であれば、次のような解決方法があります。

別のセルに列番号を入力しておく

例えば、次の図の1行目のように、空いているセルに対応する列番号を入力します。

vlookup関数の列番号を入力する箇所に、そのセルを指定することで、計算式のコピーに対応することができます。

G3セル:
=vlookup($F3, $A$3:$D$5, G$1, FALSE)
vlookupcolumn_1_4

column関数を使って、別のセルに列番号を入力する

ただ、これだけだと、列を挿入した場合に対応ができなくなります。

vlookupcolumn_1_5

column関数を使って、列番号を入れておくことで列の挿入にも対応できるようになります。

H1セル:
=column(H1)-column($G1)+1
vlookupcolumn_1_6

※同じcolumn関数を使うのでも、H1セルに「=Column(H1)-6」というような計算式を入れてしまうと、表全体を左右にずらしたい場合に対応できなくなります。ご注意ください

まとめ

変化に強い表を作りたい場合には、vlookup関数より、index関数+match関数のほうが望ましいです。

ただ、vlookup関数だけでも、ある程度の柔軟性は持たせられます。

状況に応じて、使い分けてください。

エクセル基礎講座 「無料」動画マニュアル

「経理事務のためのエクセル基礎講座(初級編)」(動画マニュアル 総収録時間162分)を無料プレゼント中です!

このマニュアルで解説していることを一通り学べば、経理事務を行う上で最低限必要となる知識が得られます。

ご登録者の方には、合わせて、公認会計士が実体験を通して身に付けたエクセルを使う技をメールにてお伝えしていきます!

無料動画講座 登録フォーム

※ご登録頂いたメールアドレスに、エクセルを使いこなすための情報を配信するメールセミナー「エクセル倍速講座」も合わせて配信させていただきます。