エクセルのVLOOKUP関数の使い方をお探しですね。
広告
エクセル 【図解】VLOOKUP関数の使い方は?エラー原因とXLOOKUPへの乗り換えガイド
エクセルで仕事をしていると、商品リストから価格を探して入力したり、社員番号から名前を自動で入れたりする作業、けっこう時間かかりますよね。
そんなときに便利なのが**VLOOKUP(ブイルックアップ)関数**なんですが、「数式を入れたらエラーばっかり出る…」「引数の順番がごちゃごちゃで覚えられない!」って悩んでいる人、実はすごく多いんです。
しかも最近、VLOOKUPの「ここが使いにくい!」っていう部分を改善した**XLOOKUP(エックスルックアップ)関数**っていう新しい関数が登場しました。
こっちに乗り換えると、作業効率がグッと上がるんです。
この記事では、VLOOKUP関数の基本的な使い方から、よくあるエラーの原因と直し方、そして次世代の標準になりそうなXLOOKUP関数への移行方法まで、まるっと解説していきます。
エクセルの「わからない…」をスッキリ解消して、もっとスマートにデータを扱えるようになりましょう!
図解で理解!VLOOKUP関数の基本構造と4つの引数
VLOOKUP関数は、指定した表の一番左の列から特定の値を探して、その行にある別の列の値を取り出してくれる関数です。
もっと簡単に言うと、**「電話帳の中から名前を探して、その人の電話番号を教えてくれる」**みたいなイメージです。
この関数を使いこなすには、**4つの引数(ひきすう)**を正しい順番で入れることが大切です。
基本の書き方はこんな感じ:
“`
=VLOOKUP(検索値, 範囲, 列番号, 検索方法)
“`
1. **検索値**:探したいデータ(例:商品ID)
2. **範囲**:データが入っている表全体(例:商品リスト)
3. **列番号**:範囲の中で、取り出したいデータが左から何列目にあるか(例:商品名なら2列目)
4. **検索方法**:完全一致で探すか、だいたい近い値でいいか(普通は「FALSE」か「0」を指定)
初心者が一番つまずくのが、2番目の**「範囲」の指定**です。
VLOOKUPには絶対ルールがあって、**探したい値(商品IDとか)が必ず範囲の一番左の列にないとダメ**なんです。
範囲を選ぶときは、ID列からスタートして、取得したいデータ(商品名や価格)が入っている列までをドラッグして選びます。
それと、数式を下の行にコピーしたときに範囲がズレないように、**「$A$2:$D$100」みたいに「$」マークをつけて絶対参照にする**のを忘れずに。
F4キーを押せば簡単に切り替えられますよ。
3番目の**「列番号」**も注意ポイントです。
これはエクセルシート全体のA列、B列…っていう番号じゃなくて、**指定した「範囲」の中で左から数えて何番目か**っていう数字を入れます。
たとえば、範囲をB列からD列まで選んだ場合、B列が1列目、C列が2列目になります。
この「数を数える」作業がVLOOKUPのちょっと面倒なところで、後で紹介するXLOOKUPではここが改善されてるんです。
毎回エラーで止まらないために!よくある原因と確実な対処法
VLOOKUP関数を使っていて一番イライラするのが、予想外のエラーが出たときですよね。
特によく見るのが**「#N/A」エラー**。
これは「Not Available」の略で、**「検索値が見つかりませんでした」**っていう意味です。
単純にデータがない場合もありますが、意外と多いのが**「データ型の不一致」**。
たとえば、検索値は「数値」で入力してるのに、参照先のリストでは「文字列(テキスト)」で保存されてる場合、エクセルは「これ別物だよね?」って判断しちゃって、見た目は同じでも検索に失敗するんです。
こういうときは、両方のセルの書式設定を統一してあげる必要があります。
次に多いのが**「#REF!」エラー**。
これは「参照(Reference)が無効です」っていう意味。
よくあるのは、数式を作った後に参照先の表で列を削除しちゃったパターン。
たとえば、列番号に「3」を指定してたのに、範囲内の2列目を削除すると、元の3列目がなくなっちゃって計算できなくなるんです。
あと、指定した範囲の列数より大きい数字を「列番号」に入れちゃった場合もこのエラーが出ます。
そして、VLOOKUP特有の落とし穴が**「検索値が範囲の左端にない」**ケース。
探したいIDが表の右側にあって、取得したい名前がその左側にあるような配置だと、VLOOKUPは使えないんです。
こういう場合は、表の列を並べ替えてIDを左端に持ってくるか、INDEX関数とMATCH関数を組み合わせるっていう、ちょっと複雑な対応が必要でした。
こういう構造的な制約が、多くの人を悩ませてきた原因なんですよね。
エラーが表示されたままだと見た目も悪いので、実務では**「IFERROR(イフエラー)関数」**と組み合わせるのが定番です。
“`
=IFERROR(VLOOKUP(…), “該当なし”)
“`
こんな風に書くと、検索値が見つからなかったりエラーが出た場合に、不穏なエラーコードの代わりに「該当なし」とか「空白(””)」を表示できます。
このひと手間で、資料の完成度がグッと上がりますよ。
面倒な列数えは不要!XLOOKUP関数への乗り換え完全ガイド
Excel 2021やMicrosoft 365を使ってる人なら、VLOOKUPの後継である**「XLOOKUP関数」**の使用を強くおすすめします!XLOOKUPは、VLOOKUPの「ここ不便だな…」っていう点がほぼ全部解消されてて、もっと直感的でミスの少ない数式が作れるようになってます。
一番大きな変更点は、**引数の指定方法がシンプルになった**こと。
XLOOKUPの基本的な書き方はこちら:
“`
=XLOOKUP(検索値, 検索範囲, 戻り範囲, [見つからない場合], [一致モード], [検索モード])
“`
– **検索値**:探したいデータ
– **検索範囲**:検索値を探す列(1列だけ指定)
– **戻り範囲**:取得したい値がある列(1列だけ指定)
– **見つからない場合**:エラー時の表示内容(IFERROR関数が不要に!)
VLOOKUPとの決定的な違いは、**「範囲全体を指定して列番号を数える」んじゃなくて、「検索する列」と「結果を返す列」をそれぞれ別々に指定する**ってところ。
これで、列番号をいちいち数える必要がなくなりました。
さらに、検索範囲と戻り範囲が独立してるから、VLOOKUPでは不可能だった**「検索値より左側のデータを取得する」**ことも普通にできちゃいます。
表のレイアウトを変えなくても、自由自在にデータを取り出せるのは大きなメリットですね。
それと、初期設定の違いも重要。
VLOOKUP関数は、第4引数を省略すると「近似一致」になっちゃって、意図しないデータを引っ張ってくる事故が多かったんですが、**XLOOKUPはデフォルトで「完全一致」**になってます。
つまり、引数を省略しても正確な検索ができるから、入力の手間が減って安全性もアップ。
しかも、第4引数に「見つからない場合」の表示文字を直接指定できるから、わざわざIFERROR関数で囲む必要もないんです。
**列の挿入や削除に強い**っていう点も見逃せません。
VLOOKUPの場合、列番号を数字(例:3)で指定してるから、間に列を挿入すると参照先がズレて、間違ったデータを表示するリスクがありました。
でもXLOOKUPはセル範囲で指定してるから、列を挿入してもエクセルが自動的に範囲を修正してくれます。
これで、長期的に使うファイルや、頻繁に改修が入るリストでも、数式が壊れにくくて安心して使い続けられるんです。
どっちを使うべき?実務における互換性と使い分けのポイント
機能面では圧倒的にXLOOKUPが優れてるんですが、実務の現場ではすぐにVLOOKUPを捨てられない事情もあります。
その最大の理由が**「互換性」**。
XLOOKUP関数は、**Excel 2019以前のパッケージ版(買い切り版)では使えない**んです。
もし、あなたが作ったファイルを取引先や社内の他部署に送る場合、相手が古いバージョンのエクセルを使ってると、XLOOKUP関数が入ってるセルは「#NAME?」エラーになっちゃいます。
だから、**自分だけで完結する作業や、チーム全員が最新環境を使ってることが確実な場合**は、迷わずXLOOKUP関数を使いましょう。
作業スピードが上がって、数式も読みやすくなります。
逆に、**不特定多数に配る資料や、相手の環境がわからないファイル**を扱う場合は、安全策としてVLOOKUP関数を使うのが賢明です。
あと、XLOOKUP関数は**「スピル」**っていう新機能に対応してます。
これは、1つの数式を入力するだけで、隣のセルにも自動的に結果が表示される機能。
たとえば、戻り範囲に「氏名」と「年齢」の2列分をまとめて指定すれば、1つのセルに数式を入れるだけで隣のセルにも年齢が自動で表示されます。
VLOOKUPだと列ごとに数式を入れる必要があったけど、XLOOKUPなら一度の入力で複数の項目を一気に取得できるんです。
こんな感じで、エクセルの関数は日々進化してます。
VLOOKUP関数の仕組みを理解しておくことは基礎として大事ですが、環境が許すなら、ぜひXLOOKUP関数への乗り換えにチャレンジしてみてください。
最初は慣れないかもしれないけど、一度その便利さを体感したら、もう前のやり方には戻れなくなるはず。
まずは手元の自分の管理用ファイルから、少しずつ新しい関数を試してみてはどうでしょうか?
広告
