エクセル・仕事効率化 PR

vlookup関数をオートフィルで半自動で簡単に書く方法

記事内に商品プロモーションを含む場合があります

データベースから情報を取り出す、最もシンプルな方法はvlookup関数を使うことです。

この記事では、vlookup関数の書き方と、入力数が多い場合にvlookup関数をオートフィルで楽して書く方法を紹介します。

また、引用データベースが空白だった場合に0を表示させない方法や検索値が空白だった場合のエラー回避法などの小技も記載しています。

本記事を理解すればvlookup関数はほぼ完璧だと思いますが、
初心者の方は、vlookup関数の基本もしくはvlookup関数のオートフィル方法まで
理解して貰えれば十分かと思います。

vlookup関数の基本

vlookup関数は、4つの情報を必要とします。
[検索値、範囲、列番号、検索方法]です。

vlookup関数に必要な4つの項目

下記のデータベースを使って、実際にデータを呼び出してみます。

ぜひ真似をして、作成してみて下さい。

vlookup関数を使えると、データベースからデータを引き出して、
それを自分の好きな形式に落とし込む事ができるようになります。

さらにVBAを使えば、100枚でも1000枚でも、その形式で印刷やPDF化を
行うことができます。

まずは、下記を目標にvlookupを使ったフォーマット(出力書式)を作ります。
かなり簡易的ですが、これも立派なフォーマットです。

vlookup関数を使ったフォーマット(出力書式)

検索値(管理番号)を変更すると、もちろん値も変更されます。
(検索値を変更することによって、左側のデータベースの任意のデータを取得できるようになったということです。)
検索値を変更すると、vlookup関数で呼び出されたデータも変更される

それでは、実際にこの関数を作成してみます。
最初に、セル内に「=vlookup(」と入力します。

そして次に、「検索値」を設定します。
今回は、H1セルに検索値があるので、「H1」と入力します。

入力は、H1セルをクリックしてもよいですし、H1と直接入力しても構いません。
vlookup関数における検索値の入力方法

検索値を設定したら、次は、データベースの範囲を設定します。
今回のデータベースの範囲は下記のとおりですので、
vlookup関数におけるデータ範囲の指定方法

A~Dセルを選択するか、A:Dと入力して下さい。A~Dの選択の仕方も、AをクリックしたままDまでマウスを動かすか、Aを選択した後に、Shiftを押しながらDを選択して下しさい。

範囲を設定したら、次は必要なデータがどこにあるのか、を指定します。
今回はデータベースの2列目にあるので、2と入力します。
vlookup関数における列番号の指定方法

最後に、FALSEと入力すると完成です。
FALSEを入力しないと、上手く検索できない時があるので、常にFALSEと入れるようにしましょう。
小文字でfalseと入力しても構いません。

vlookup関数においてTRUEとFALSEのどちらを選択すべきか

最後に、数学と国語でも同じ作業を行うと、完成です!
フォーマットへのデータ入力の完了

上記の流れを見ながら何回か自分でやってみると自然にできるようになっています。
vlookup関数はこれで使えるようになると思います。

vlookup関数とオートフィル

vlookup関数を覚えたら、次に思うことは何かというと、vlookup関数を一個一個書くのめんどくさい、ということです。

上記は3個だったので、手で書けばよかったですが、
例えば、vlookupで呼び出したい関数が20個あった場合、全部手書き入力するのって意外と大変ですよね。。

なので、それを簡単に記述する方法をお教えします。

また、オートフィルで簡単にできても、自分のフォーマットに合わせれないし、
意味ないやと思うかもしれませんが、それも簡単にできる方法をお教えします。

vlookupって、なんでオートフィルが使いにくいのかと言うと、
下記の様な検索値、範囲、列番号と、オートフィルを行うには異なる2パターンの処理が必要だからです。

何も処理をせずにオートフィルを行うと、下記の様にエラーが出てしまいます。
vlookup関数のオートフィルエラー

では、その異なる2パターンは、というと
検索値(A1)と範囲(A:Z)は絶対参照に。
※絶対参照とは、オートフィルを行っても数値や範囲が変わらない値のことを指します。

列番号は、オートフィル後に手で数値を修正する必要をなくしたいです。

この2種類の処理が必要なので、vlookup関数のオートフィルでの自動入力は、少しハードルが高くなっている気がします。

まずは、簡単な絶対参照化の処理を先に施します。

絶対参照にしたい値をクリックして、キーボードのF4を一度だけ押して、絶対参照します。
下記の場合は、H1、A:Dそれぞれを絶対参照化してください。
vlookup関数の検索値の絶対参照化

絶対参照化してオートフィルを行うと、下記の様に一歩前進した感じになります。
vlookup関数の検索値の絶対参照化後のオートフィル

今回のように、数が少ない場合は、下記の列番号を手で変更すれば良いです。
vlookup関数のオートフィルと列番号の書き方

しかし数が多い場合は、オートフィルでやってしまいたいですよね。
なので、数が多い場合は、ROW関数やCOLUMN関数を使います。

ROW関数は、列数を数える関数で、
COLUMN関数は、行数を数える関数です。

ですので、ROW関数は縦にオートフィルする場合。
COLUMN関数は横にオートフィルする場合です。

vlookup関数のオートフィルとROW関数COLUMN関数の方向

ちなみに、こんなことは覚える必要はありません。
vlookupでオートフィルする時はこの記事を見れば良いだけです。

何回も行えば自然に覚えますので、わざわざ労力を掛けて覚える必要はありません。

では、今回の場合は縦ですので、ROW関数を使って書いてみます。
今回は、列番号の値が「2」ですので、ROW(A2)と入力します。

vlookup関数にROW関数を用いてオートフィルを行う準備

ちなみにROW(A2)でなくても、ROW(B2)でもROW(C2)でも何でも構いません。
ただ、オートフィルで動く値を取得したいだけです。

最後に、オートフィルを行ってみましょう。
vlookup関数にROW関数を用いてオートフィルを行った
データベースとも値が一致しており、正確にデータを取得できたことが分かります。

実際にこんな数の多いデータベースでも、
抽出すべきデータが多い出力書式でオートフィルを行う
※範囲だけ変えてあります。

オートフィルで一発です。こちらもデータベースとも値が一致しており、正確にデータを取得できたことが分かります。
抽出すべきデータが多い出力書式でオートフィルを行った例

一応、ダウンロード出来るようにしておきます。必要ならダウンロードしてください。

データベースとは

ぼくは何度もデータベースという言葉を使っていますが、
データベースって難しく考える必要はなく、
ただ、列の一番上のルールに則ったデータが入っているものと考えればよいかと思います。
データベースの定義

ちなみに、列の一番上のルールの事を、フィールド名と言います。
もちろん覚える必要はありません。

ただデータベースには必ず、番号を数字で入れるようにして下さい。
1から順番でなくても構いませんが、絶対に重複はさせないでください。

この数字があればvlookup関数で簡単にデータを呼び出すことができますが、
この数字がないと、Index関数とMatch関数を複合した式を記述しなければならなくなるので、ものすごく大変です。

いらない苦労をする必要はありませんので、数字は必ず入れて下さい。

書類作成を劇的に簡単にする一工夫

記事が長くなってしまったので、別の記事にて解説します。
この一工夫で、書類作成は劇的に簡単になります。

>> vlookup関数を使った書類作成を短時間で終わらせる一工夫

vlookup関数の引用元が空白だった場合

vlookup関数の引用元が空白だった場合は、
セルに0が表示されてしまいます。

データベースに含まれる空白をvlookupで呼び出すと0が表示されてしまう

これ、地味に鬱陶しいです。
書式の変更で空白にすることもできますが、書式の変更での0削除は不安定なので、紹介しません。

この場合の対処の仕方は2通りあります。
1つは、「=vlookup(A1,A:D,2,false) &””」と、
&””を追加することです。

これを入れることでそのセルは、文字列の「空白」と認識されるので、
0が自動で入力されません。

&

この方法で呼出した場合、数字が文字列としてエクセルには認識されてしまいますが、
ほとんどの場合は問題ありません。
もし気になる場合は、再度呼び出す時に*1とすればまた数式に戻ります。
(意味がわからない場合も、問題ありませんので、気にしないでください)

もう1つは、if関数を使った方法です。
下記のA1にvlookupの式を代入する方法です。
=if(A1=””,””,A1)

A1が空白だったら、空白にしてね。
空白じゃない場合は、A1の値を代入してねって意味です。

実際に書くとこうなります。
=if(vlookup(A1,A:D,2,false)=””,””,vlookup(A1,A:D,2,false))

パッと見ややこしく、1つ目の方法が可読性も高いので、オススメです。

検索値が空白の際のエラーを解消する方法

VBAを用いた場合、最後は検索値を空白にして完了させることが多いです。

ここに書く必要があるかどうかは迷いましたが、将来的にはVBAも勉強して、
自動化したいと思っている方はVBAで自動化後にこちらを参照して下さい。

検索値を空白にした場合はこの様になります。
エラーが出ていて、嫌ですよね。
vlookup関数で検索値が空白の場合

この場合は、iferror関数かif関数を使います。

iferror関数を使う場合は、「=iferror(式,””)」と書くと、
式にエラーが有る場合に、空白にしてくれます。

空白になっていますね。
iferror関数を用いたvlookup関数の検索値が空白の場合のエラー回避法

もう1つは、if関数です。
下記の様に記述すると、検索値が空白の時は空白にしてくれます。
=if(検索値=””,””,式)

ぼくはこっちの方が好きです。

もし仮に検索値が空白以外のエラーが出てしまった場合、
iferror関数を使っていると気付きにくいからです。
あと、前方だけ書いてダブルクリックするだけで良いですし。。

空白になってますね!(オートフィルを行うなら、IF関数部分も絶対化しておいてくださいね。)
if関数を用いたvlookup関数の検索値が空白の場合のエラー回避法

まとめ

vlookup関数は非常に便利な関数で、
エクセルが小さなデータベースと相性が良いことから、非常によく使います。

オートフィルが出来ると意外と便利なので、ぜひオートフィルまでマスターして下さい。

もしデータベースからvlookup関数でデータを取得する場合、ある一工夫で、
可読性及び正確性が非常に高くなる方法があります。こちらも参考になると思います。
vlookup関数を使った書類作成を短時間で終わらせる一工夫

エクセルで業務改善を行うには、非常に多くの知識や勉強が必要と考えているかもしれませんが、そうではありません。

下記の関数や考え方を身に着けたら、業務改善におけるエクセルの基本はマスターしたと考えて良いと思います。
エクセル関数を使いこなすのに必要なたった10個のこと

上記の関数及び考え方を理解したら、ただひたすら実践あるのみです。

いきなり業務改善するなんてって思うかもしれませんが、下記の記事を読んでもらえれば、
考え方も変わるかもしれません。
【アンケート結果】 中級者以上のエクセル上達法はたった2種類だった

ABOUT ME
カフェインレス
いま日本では、残業するのがアタリマエ。仕事はしんどくて当然。みたいな風潮がありませんか? ぼくには娘がいるのですが、将来、社会に対して暗い気持ちになってしまったらイヤだな、と。 定時で帰るのを当然のこととするために、「本質的な技術」や「小手先のテクニック」を紹介しております。 仕事に慣れたところで、10-20%程度しか仕事は早くなりません。エクセルを学んだり、考え方を変えると90%以上の業務時間が短縮ができる事があります。 仕事って人生で一番時間を使うことなので、その仕事のうちの「作業」だけでも自動化できれば、仕事のクオリティは段違いになります。 あなたの仕事のステップを一段階上げるために。また、毎日にゆとりをもたらすための一助になりたいと思っています。