別シートにマスタ用データを作り、そこからvlookupでデータを検索して引っ張ってくる。
検索したい元データが複数あるような場合、元データごとに別々のシートに定義することで管理が楽になるとともに、vlookup関数の見やすさも向上します。このようにvlookupを使っている方・使いたい方は多いのではないかと思います。
しかし、元データを複数の別シートに分けているとたまに、「ある特定の別シートからのvlookupがうまくいかない」といったケースが発生します。
そこでこの記事では、エクセルのvlookupで別シートから検索がうまくいかないようなエラーが発生した場合のチェックポイントと対処方法についてまとめました。
vlookupの別シート検索がうまくいかない原因
別シートに定義したリストからのvlookupがうまくいかない場合、原因としては次の点が考えられます。
- vlookupの使い方がそもそも間違っている
- データはあるけれどセルの書式不一致でうまくいかない
- 別シートを参照する際の指定方法が間違っている
vlookupの使い方がそもそも間違っている
これは、別シートのデータを参照してvlookupを使用しているケースも含め、そもそも使い方が間違っているためにうまくいかないというものです。
vlookupがうまくいかない場合は、次のチェックポイントに該当していないかを確認してみましょう。
vlookup関数の第二引数(検索対象の範囲)で本来とは違うシートを参照していた
これは複数の別シートにデータを分けて定義している場合によくある間違いです。
本来はAシートからvlookupするはずが、Bシートからvlookupしていた、というようなケースが該当します。
本来とは違う別シートの範囲からvlookupしているため、データが無く、当然うまくいきません。
複数の別シートで管理しているような場合は、まず検索対象のシートが合っているかを確認してみましょう。
vlookup関数の第二引数(検索対象の範囲)の範囲指定がずれていた
これもvlookupを使う中でよくある間違いです。
本来はA列~C列を参照するはずが、B列からD列を参照していたため、データが見つからずうまくいかないといったケースに該当します。
本来:vlookup("aaa", A:C, 2, false)
実際:vlookup("aaa", B:D, 2, false)
vlookupが設定されているセルをコピーして別のセルに貼り付けした、というような場合に、第二引数の範囲指定が気付かないうちにずれてしまい、結果うまくいかない形になります。
このセルをコピペした際に範囲が意図せずずれてしまうという現象は、vlookup関数に限らず発生するものです。
関数内のセルの位置をコピペでずれないようにしたい場合は、相対参照ではなく絶対参照でセル範囲を指定するようにすることが重要です。
vlookup("aaa", $A:$C, 2, false)
範囲は絶対参照で指定することで、コピペしてもずれなくなる。
色々なセルでvlookupを使用している場合、このケースに該当するミスを結構な頻度でやらかしまいます。
結果、エラーがあるにもかかわらず潜在的にうまくいっていなかった、ということもあり得ますので、うまくいかない場合は範囲が正しいかを見てみましょう。
vlookup関数の第二引数(検索対象の範囲)と第三引数のインデックスが合っていない
これもよくあるケースで、これに該当する場合はvlookupの結果が#Ref!エラーとなりデータがみつからない結果になります。
vlookup("aaa", A:C, 4, false)
第二引数でA:Cとしているので検索対象の範囲はA列・B列・C列の3つ、つまり第三引数では1~3のどれかを指定すると値が取得できる形となっていますが、第三引数では範囲外の4を指定しています。
そのためにデータを取得できず、Ref!エラーが表示されます。
このケースに該当する場合、第二引数の列範囲を増やしてあげるか、第三引数のインデックスを正しいものにするか、どちらかの対応をすれば解消することができます。
データはあるけれどセルの書式不一致でうまくいかない
vloookup関数の第二引数の範囲指定は特に問題ないことが確認できたが、欲しいデータが取れずうまくいかない(#N/Aが表示される)ような場合、書式の問題が考えられます。
書式の問題というのは、vlookup関数の第一引数と第二引数の先頭列の書式が合っていない、ということを指しています。
この問題は別シートからデータを参照している・していないに限らずよく起こる問題なので、別記事の「データはあるのにvlookupが#N/Aになる場合の対応方法」について詳しくまとめています。
大抵のvlookupでうまくいかない現象はここを見直すことで解決できると思います。
vlookup関数の別シート名を指定方法が間違っている
いやそうじゃない、別シートのセルを範囲を指定しているのだが、そもそもセルにvlookup関数を指定後にカーソルを外すとエラーが出るんだ!という場合は、別シート名の指定方法が間違っていることが考えられます。
このケースはvlookup関数の第二引数で範囲指定をする際に、範囲を手打ちしていることで高頻度で発生します。
発生しないようにするには次の対処方法で範囲指定を行います。
別シートからのvlookupがうまくいかない場合の対処方法
別シートのセルを参照してvlookup関数を作りたい場合、次の操作をするとエラーなく関数定義をすることができます。
まず、セルに「=vlookup(」までをキーボード入力します。
次に、第一引数にしたいセルをクリックします。
例えばA2セルを指定したい場合、A2セルをクリックします。するとセル内の値は「=vlookup(A2」となります。
続けてキーボードでカンマを入力し、「=vlookup(A2,」とします。
次は第二引数の範囲指定なので、このまま対象の別シートをまずクリックします。すると別シートの内容が表示されますので、そのままマウス操作で範囲を選択します。
例えば「TEST」シートのA:C列を指定したいような場合、
- 「TEST」シートをクリック
- A列~C列をマウスで範囲選択
という操作をします。
この操作後、セルの値は「=vlookup(A1, TEST!A:C」となっていますので、マウスやタッチパネルで他のセルを触らないように注意します。
※ほかのセルを触ってしまうと、"TEST!A:C"と範囲指定した部分が、触ってしまったセルで上書きされてしまうためです。
最後に、キーボードでカンマを入力し「 =vlookup(A1, TEST!A:C,」となってからは、vlookupの第三引数と第四引数をキーボード入力後、Enterをします。
これで別シートを範囲指定したvlookup定義が完了です。
vlookup関数の引数でセルや範囲を指定する際は直接入力せずマウスで指定する。
まとめ
別シートからのvlookupがうまくいかない場合の原因調査と対処方法についてご紹介しました。
vlookupのエラーは発生ケースが多岐にわたるため、解決するまでに時間を取られてしまうことが多いです。
この記事では特に別シートを使ったvlookupに絞って書いてみましたので、問題が解決できてうまくいったとなってくれると嬉しいです。
また、この記事に書いたようなちょっとした困ったことでも、自分に経験や知識が足りないために対応できなかったり、時間をかけたわりに全然進まなかったりと、思うようにいかない事ってありますよね。そんなときは専門家に相談したり解決してもらったりする方法もありますので、一人で悩まず対処してみましょう。