表計算ソフトのセルが並んだ画面
Tutorials

VLOOKUPエラーの直し方5選|#N/A・#REF!を症状別に解決

VLOOKUP関数を入力してEnterを押したら、欲しかった値ではなく「#N/A」や「#REF!」という見慣れない文字列が返ってきた。締め切り間際にこれが出ると、どこが悪いのか分からず焦ってしまいますよね。

安心してください。VLOOKUPのエラーは原因のパターンがほぼ決まっていて、いま画面に出ている症状さえ特定できれば、多くは数分で直せます。この記事では表示されるエラー別に、原因と直し方を順番に確認していきます。

表計算ソフトのセルが並んだ画面

出典: Pixabay

結論

最初にやることは1つだけです。セルに表示されている文字列(#N/A・#REF!・#VALUE!・#NAME?)を確認すること。エラーの種類ごとに原因も直し方もまったく違うため、ここを飛ばして式をいじり回すと遠回りになります。

下の早見表で、いま起きている症状の行を見つけてください。該当するセクションへ進めば、最短で原因にたどり着けます。

表示される症状 主な原因 まず試すこと
#N/A 検索値が検索範囲の中に見つからない 表記ゆれ・データ型・前後のスペースを確認する
#REF! 参照が無効。列番号が検索範囲の列数を超えている 第3引数の列番号と、第2引数の範囲の列数を数え直す
#VALUE! 検索値が255文字超、または列番号がテキスト・1未満 検索値の長さと列番号の指定を見直す
#NAME? 関数名や引数のスペルミス 「VLOOKUP」「FALSE」の綴りを確認する
エラーは出ないが値がずれる・空になる 相対参照のままコピー、別シート名の記述ミス 範囲を$付きの絶対参照にする、シート名の書き方を見直す

パソコンの画面を見て困っている会社員のイラスト

出典: いらすとや

ここからは症状ごとに、原因と具体的な直し方を見ていきます。自分の画面に出ているエラーのセクションから読み進めてください。

「#N/A」エラー(検索値が見つからない)の原因と直し方

Microsoftの公式サポートは、#N/Aを「数式が検索を求められたものを見つけられない」ことを示すエラーと説明しています。VLOOKUPのほか、XLOOKUP・HLOOKUP・LOOKUP・MATCHでも、参照値が検索範囲に存在しないときに同じエラーが出ます(Microsoft サポート「#N/A エラーを修正する方法」、2026-08-21時点)。

つまり#N/Aは「壊れている」のではなく「見つからなかった」というExcelからの報告です。犯人は次の4つのどれかであることがほとんどです。

原因1: 検索値が検索範囲に存在しない・表記ゆれがある

まず疑うのは単純な不一致です。検索値のセルをコピーしてCtrl+Fで検索範囲を探し、まったく同じ文字列が実在するかを確かめてください。株式会社の有無、全角と半角の違い、ハイフンの種類など、目視では気づきにくい差が原因になりがちです。

注意したいのは、Ctrl+Fで見つかってもVLOOKUPでは見つからないことがある点です。Microsoft Q&Aでも「検索機能では見つかるのにVLOOKUPでは見つからない」という相談が寄せられており、検索機能は部分一致で探すのに対しVLOOKUPは完全一致を求めるため、結果が食い違うと整理されています(Microsoft Q&A)。

原因2: 数値と文字列でデータ型が一致していない

見た目が同じ「1001」でも、片方が数値で片方が文字列として保存されていれば一致しません。公式サポートも#N/Aの主要因として「参照値とソースデータのデータ型が異なる」ことを挙げ、修正方法は「データ型が同じになるようにする」ことだと明記しています。

見分け方の目安は、セル左上に出る緑色の三角マークです。これは文字列として保存された数値のサインで、Microsoft Q&Aの回答者も#N/Aの切り分け時に確認するポイントとして挙げています(Microsoft Q&A)。表側か検索値側のどちらかを変換して、型をそろえましょう。

原因3: 検索値の前後に余分なスペースが入っている

コピー&ペーストで貼り付けたデータには、末尾に半角スペースが紛れ込むことがよくあります。公式サポートは、この場合にTRIM関数で先頭・末尾のスペースを削除することを案内しています。=VLOOKUP(TRIM(A2),範囲,列番号,FALSE)のように検索値をTRIMで包むだけで直るケースは少なくありません。

なお、全角と半角の統一やCLEAN関数での改行除去も解説記事でよく紹介される対処法ですが、公式ページでの言及はスペースとデータ型にとどまります。まずはTRIMとデータ型から確認するのが確実です。

原因4: 第4引数(検索方法)をFALSEにしていない

VLOOKUPの第4引数を省略したりTRUEにしたりすると近似一致での検索になり、意図しない値やエラーが返ることがあると公式サポートは明記しています。たとえば検索範囲の並び順が昇順になっていないと、探している行とは別の行の値を拾ってきてしまう、といったことが起こります。完全一致で検索したいなら、=VLOOKUP(A2,$D$2:$F$100,3,FALSE)のように必ずFALSE(または0)を指定してください。

Microsoft Q&Aでも、VLOOKUPの結果がおかしいという相談に対し、回答者が第4引数にFALSEまたは0を指定することと、検索値がリストと完全一致していない可能性を最初に指摘しています(Microsoft Q&A)。迷ったらFALSE、と覚えておけば大きく外しません。

「#REF!」エラー(参照が無効)の原因と直し方

#REF!は「参照先がない」ことを示すエラーです。VLOOKUPでは原因が2つにほぼ絞られるため、#N/Aより特定は簡単です。

原因1: 列番号が検索範囲の列数を超えている

公式サポートは具体例として=VLOOKUP(A8,A2:D5,5,FALSE)を挙げています。範囲がA列〜D列の4列しかないのに5列目を取り出そうとしているため、Excelは参照できず#REF!を返します(Microsoft サポート「#REF! エラーを修正する方法」、2026-08-21時点)。

直し方は2通りで、公式が示す修正例は次のとおりです。どちらを選ぶかは、取り出したい列がどこにあるかで決めてください。

直し方 修正例 向いているケース
範囲を列番号まで広げる A2:D5A2:E5 取り出したい列が範囲の外にある
列番号を範囲内に収める 54 列番号の数え間違いだった

列番号は「範囲の左端を1列目として数えた番号」です。シートのA列=1と数えてしまうミスが多いので、第2引数の開始列から数え直してください。

原因2: 参照していた列やセルを削除してしまった

数式が参照していた列を後から削除した場合も#REF!になります。直前の操作であればCtrl+Zで元に戻すのが最短ですが、時間が経っていれば数式の参照先を手で指定し直す必要があります。

予防策として公式サポートが挙げているのが、範囲参照を使うことです。=SUM(B2:D2)のように範囲で書いておけば、列を削除してもExcelが参照を自動調整してくれます。VLOOKUPの検索範囲も、列を1つずつ列挙せず範囲でまとめて指定しておくと安全です。

ノートパソコンで表計算シートを操作する手元

出典: Unsplash

「#VALUE!」「#NAME?」エラーの原因と直し方

この2つは登場頻度こそ低いものの、原因がはっきりしているぶん直し方も明快です。

#VALUE!: 検索値が255文字超、または列番号の指定が不正

公式サポートは、VLOOKUPで#VALUE!が出る原因として2点を挙げています。1つ目は検索値が255文字より長い場合で、回避策としてINDEX関数とMATCH関数の組み合わせが提示されています。具体的には=INDEX(範囲,MATCH(検索値,検索列,0))のように、VLOOKUPをINDEX+MATCHに置き換えることで文字数の制限を回避できます。2つ目は列番号にテキストが含まれている、または1より小さい数値になっている場合です(Excelの数式ヘルプではこの引数を col_index_num と呼びます)(Microsoft サポート「VLOOKUP 関数の #VALUE! エラーを修正する方法」、2026-08-21時点)。

列番号を他のセルから参照している場合は、そのセルが空欄や文字列になっていないかを確認してください。0や負の数が入っているときも同じエラーになります。

#NAME?: 関数名や引数のスペルミス

#NAME?は、関数名や範囲名の綴り間違いが原因で発生するとされています。VLOOKUPをVLOKUPと打ち間違えた、FALSEをFALESと書いた、といったケースです。

対処はシンプルで、綴りを直すだけです。手入力せず、数式入力中に表示される候補一覧から関数名を選ぶようにすると再発を防げます。

エラーコードにならない「よくあるつまずき」

エラーは出ていないのに結果が明らかにおかしい、というパターンも実務では頻出します。次の2つが代表格です。

数式をコピーしたら検索範囲がずれる

VLOOKUPを1行目で作って下方向にコピーしたとたん#N/Aだらけになるのは、検索範囲(第2引数)が相対参照のままコピーされ、範囲が1行ずつ下にずれていくためです。$A$2:$D$6のように行・列の前に$を付けた絶対参照にすれば、コピーしても範囲は固定されます。

数式バーで範囲を選択してF4キーを押すと、絶対参照に一発で変換できます。コピーする前にF4、と手順に組み込んでおくと事故が減ります。

別シートを参照できない

別シートを参照するVLOOKUPが機能しない場合、シート名の記述ミスが典型的な原因とされています。特にシート名にスペースや数字が含まれるときは、'売上 2024'!A2:D100のようにシングルクォーテーションで囲む必要があります。

もう1つの典型が、参照先と参照元でデータ型が食い違っているケースです(この点は「#N/A」原因2で説明したデータ型の不一致と同じ現象です)。別ファイルから取り込んだシートは、数値が文字列として保存されていることが多いため注意してください。範囲は手入力せず、マウスで別シートを選択して指定すると記述ミスを避けられます。

それでも解決しない場合の対処法

一通り確認しても直らないときは、原因が数式そのものではなくデータ側にある可能性があります。有効なのが、新規ファイルに数件だけの簡単な表を作り、同じ数式で試してみる方法です。Microsoft Q&Aの回答者も、#N/Aの切り分け手段としてこの方法を提案しています。

新しい表で正しく動くなら、数式の書き方は正しく、元データ側に見えない文字やデータ型の問題があると判断できます。逆に新しい表でもエラーになるなら、引数の指定を見直せば解決します。

期限が迫っていて、まずは見た目だけでも整えたい場合はIFERROR関数が使えます。=IFERROR(VLOOKUP(検索値,範囲,列番号,FALSE),"該当なし")と書けば、エラーの代わりに「該当なし」が表示されます。#N/Aだけを処理して他のエラーはそのまま表示させたいなら、IFNA関数を使う方法もあります。=IFNA(VLOOKUP(検索値,範囲,列番号,FALSE),"該当なし")のように、IFERRORをIFNAに置き換えるだけで書けます。

ただし、エラーを隠すことと直すことは別物です。原因を放置したまま非表示にすると、集計値が静かに間違い続けます。なお、近年のExcelにはエラー時の代替値を関数内で直接指定できるXLOOKUPという代替関数も用意されており、使える環境であれば移行を検討する価値があります(利用できるかは環境により異なるため、Microsoft サポートで最新情報を確認してください)。

どうしても解決しない場合は、Microsoft Q&Aのようなコミュニティで、実際の数式とエラー表示を添えて質問するのが近道です。

まとめ

VLOOKUPのエラーは、表示されている文字列さえ見れば原因の範囲を大きく絞り込めます。#N/Aなら検索値が見つかっていない、#REF!なら列番号か参照先、#VALUE!なら検索値の長さか列番号、#NAME?なら綴りです。エラーは失敗ではなく、Excelがどこを直せばいいか教えてくれているサインだと考えてください。

再発を防ぐには、次の3つを習慣にするのが効果的です。

  • 入力ルールを決める: 全角と半角、前後のスペース、表記ゆれを持ち込まない
  • 範囲は絶対参照にする: コピー前にF4キーで$を付ける
  • 第4引数は必ずFALSE: 完全一致で検索する癖をつける

まずは、いま#N/Aが出ているセルの検索値をTRIMで包み、データ型をそろえるところから試してみてください。それでも直らないときは、新規ファイルに小さな表を作って切り分ければ、原因が数式側かデータ側かをはっきりさせられます。落ち着いて1つずつ確認すれば、必ず解決できます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です