エクセルのエラー一覧と#VALUE!や#N/Aの意味・原因・対処法

エクセルのエラーは、セルに「#」で始まる記号として表示されます。#VALUE!や#N/Aが出ても、数式そのものが壊れているとは限りません。記号ごとに原因は定まっているため、意味を調べれば見直すセルを限定できます。後半では、修正できないエラーや見せたくないエラーをIFERRORやIFNAで置き換える方法と、緑の三角の消し方も解説します。

エクセルのエラー一覧から検索ボックスで意味と原因を調べる

エクセルのエラーは、早見表の検索ボックスに記号を入れると、意味と原因をその行で調べることができます。 早見表には、エラー値の表示・意味・主な原因・対処法を1行ずつ収録しています。 見慣れない記号が出たときは、まず早見表で見当をつけておくといいでしょう。

エクセルのエラーは種類と意味が記号ごとに定まっている

エラー値の意味は記号ごとに定まっていて、本物は9種類です。 早見表には、9種類のエラー値に#####と循環参照の警告を加えた11種類の表示を収録しています。 分類は3つです。 #VALUE!・#REF!・#DIV/0!・#N/A・#NAME?・#NULL!・#NUM!の7種類、スピルで出る#SPILL!と#CALC!、エラー値ではない#####と循環参照の警告に分けています。

エラー値早見表の検索ボックスに「#REF」や「スペース」のように記号か原因の言葉を入れると、一致する行だけが表示されます。タブで表示する分類を切り替えたり、並べ替えたりすることもできます。

エラー値早見表

対処法の列は、各エラー値のMicrosoftサポートページにある対処を短くまとめたものです。1行で分からないときは、このあと記号ごとに詳しい手順を紹介します。

#####は列幅不足か数式の結果が負の日付のときに出る

#####は、セルの中身が列幅に収まらないときと、数式の結果が負の日付や時刻になったときに出る表示です。 エラー値ではありませんが、エラーと間違えやすい表示です。列幅が不足している場合は、列の右端をドラッグして幅を広げるほか、セルの書式設定の縮小して全体を表示するや短い日付形式への変更でも全体を表示することができます。

幅を広げても消えないときは、数式の結果が負の日付や時刻になっていないかをチェックします。1900年日付システムでは、日付と時刻を正の値にする必要があります。負の結果になる場合は、日付以外の表示形式に変更してください。

列幅を広げてセルの内容をすべて表示するには、列見出しの右端を選び、目的の幅までドラッグします。 — 列幅の広げ方に関する記述より
公式情報を見る →

#VALUE!・#REF!・#DIV/0!はセルの中身と参照先が原因

#VALUE!・#REF!・#DIV/0!は、計算に使うセルの中身か数式が指す参照先を見直すと解消します。 どれも数式の書き方ではなく、参照しているセルの中身や位置が原因で出るエラーです。

#VALUE!は文字列を数値に変換できないセルがあると出る

#VALUE!は、計算に使うセルに文字列や見た目では分からないスペースが入っているときに出ます。 入力した数式か参照先のセルに問題があるときに出るエラーで、原因の幅が広く、特定しにくいエラーです。主な原因は次のとおりです。

  • 見た目では分からないスペースを含むセルを、数式が参照している(何も表示されていなくても空ではありません)
  • 文字列や特殊文字が入ったセルを、+や*で計算している

スペースが原因なら、ホーム→検索と選択→置換で、検索する文字列にスペースを入れ、置換後の文字列には何も入力せずに置き換えます。どのセルが文字列かは、ISTEXTで調べられるでしょう。ただしISTEXTでわかるのは文字列のセルまでなので、修正は手動で行うことになります。

文字列が混ざっていても計算したいときは、=A2+B2+C2の代わりに=SUM(A2:C2)を、=A2*B2の代わりに=PRODUCT(A2,B2)を使います。Microsoftによると、SUMやPRODUCTは文字列を無視して計算するため、エラーが消える場合が多くなります。

原因が見つからないときは、数式→数式の検証→検証で数式を部分ごとに評価すると、どこで止まるかを調べることができます。左揃えで緑の三角が付いた数値は、文字列として保存された数値です。日付が左揃えの場合も、日付ではなく文字列です。

スペースを含む他のセルを参照しているため、 #VALUE! がよく発生します。 — スペースと文字列の問題に関する記述より
公式情報を見る →

#REF!は参照先の行や列を削除すると出る

#REF!は、数式が参照していたセルを削除したり、上から貼り付けたりして無効になると出ます。 たとえば=SUM(B2,C2,D2)で列Cを削除すると、数式は=SUM(B2,#REF!,C2)に変わります。削除した直後であれば、Ctrl+Zで元に戻すことができます。

再発を防ぐには、=SUM(B2:D2)のように範囲で参照します。範囲内の列を削除しても、数式は自動で調整されます。

範囲の外を指定した場合も#REF!になります。=VLOOKUP(A8,A2:D5,5,FALSE)は範囲が4列しかないのに5列目を指定しているため、エラーです。列番号を4にした=VLOOKUP(A8,A2:D5,4,FALSE)なら有効です。

=INDEX(B2:E5,5,5)も、4行×4列の範囲の外を指定するため#REF!になります。INDIRECTで閉じたブックを参照している場合も#REF!になるため、参照先のブックを開くと解消します。

ほとんどの場合、このエラーは、数式から参照されているセルが削除または上に貼り付けられたときに発生します。 — #REF! エラーの冒頭の説明より
公式情報を見る →

#DIV/0!は割る側のセルが0か空白だと出る

#DIV/0!は、0か空白のセルで割ったときに出るため、割る側のセルに値が入っているかをチェックします。 =5/0のように数式へ直接書いても、#DIV/0!になります。 値が入るまでエラーを見せたくないときは、IFで分岐させます。

=IF(A3,A2/A3,0)ならA3が0か空のときに0を、=IF(A3,A2/A3,"")なら空白を表示します。=IFERROR(A2/A3,0)でも0に置き換えられます。

ただしIFERRORとIF(ISERROR())は、#DIV/0!以外のすべてのエラーも置き換えます。先に数式が正しく動作するかをチェックしてから使うのが確実です。

関数または数式の除数がゼロまたは空白セルでないことを確認します。 — エラーを解決する操作に関する記述より
公式情報を見る →

VLOOKUPの#N/Aは不一致、#NAME?は書き方の誤り

VLOOKUPで出る#N/Aは検索値が見つからないときの表示で、#NAME?は関数名や数式の書き方の誤りで出ます。 修正する場所が異なるため、先にどちらのエラーかを見分けてください。

VLOOKUPで#N/Aが出るのは検索値が見つからないとき

#N/Aは、数式で探した値が見つからないときに出ます。 最も多い原因は、XLOOKUP・VLOOKUP・HLOOKUP・LOOKUP・MATCHで検索値が元データにないことです。 値があるはずなのに見つからない場合は、次の内容をチェックします。

  • 検索値と元データのデータ型が異なる(数値を探しているのに、元データが文字列になっているなど)
  • セルの先頭や末尾に、余分なスペースがある(TRIMで取り除くことができます)
  • VLOOKUPの第4引数にTRUE(近似一致)を指定している

完全一致で探すには、VLOOKUPなら第4引数をFALSEに、MATCHなら照合の種類を0にします。なお、#N/Aはグラフに描かれないため、グラフ用のデータではあえて使うこともあります。

通常、#N/A エラーは、数式が検索を求められたものを見つけられないことを示します。 — #N/A エラーの冒頭の説明より
公式情報を見る →

#NAME?は関数名のつづりや数式の誤りで出る

#NAME?は、関数名のつづりが間違っているときに出ます。 つづりの間違いは最も多い原因で、関数名を入力すると表示される一覧から選ぶと防ぐことができます。 Microsoftは、#NAME?をIFERRORで隠さず、構文を修正するよう勧めています。 つづりが正しいのに出る場合は、次の原因をチェックします。

  • 定義されていない名前を参照している、または定義した名前のつづりを間違えている
  • 文字列を二重引用符("")で囲んでいない
  • 範囲参照のコロン(:)が抜けている
  • 無効になっているアドインが必要な関数を使っている(例: EUROCONVERT)
IFERROR などのエラー処理機能を使用して、エラーをマスクしないでください。 — #NAME? エラーの重要事項より
公式情報を見る →

#SPILL!・#CALC!・#NULL!・#NUM!と循環参照の原因

#SPILL!と#CALC!は結果を複数のセルへ広げる数式で出るエラー値で、#NULL!と#NUM!は範囲や数値の指定を誤ると出ます。 スピルとは、1つの数式の結果が隣のセルへあふれて表示される仕組みのことです。FILTERやSEQUENCEのように複数の結果を出力する関数が、この動作をします。

#CALC!は、Excelの計算エンジンが対応していない計算を検出したときに出ます。原因の例は次のとおりです。

  • 配列の中に配列を入れた(例: =MUNIT({1,2})。=MUNIT(2)なら計算することができる)
  • FILTERの結果が空になった(=FILTER(C3:D5,D3:D5<100)は、100未満の値がないとエラーになる。第3引数を追加した=FILTER(C3:D5,D3:D5<100,0)なら、0を表示する)
  • LAMBDAをかっこで呼び出さずにセルへ入れた(=LAMBDA(x, x+1)はエラーで、=LAMBDA(x, x+1)(1)なら2が表示される)
  • Excel for the webで、10,000を超えるセルを参照するカスタム関数を使った
  • Python in Excelで、一度に100 MBを超えるデータを処理した
#CALC! エラーは、Excel の計算エンジンで現在サポートされていないシナリオが検出されたときに発生します。 — #CALC! エラーの冒頭の説明より
公式情報を見る →

#SPILL!はスピル範囲にデータがあると出る

#SPILL!は、スピル範囲(結果が出力される範囲)が空いていないときに出ます。 数式のセルを選ぶと、予定の範囲が破線で囲まれます。エラーの警告アイコンから障害物セルの選択を選ぶと、邪魔になっているセルへ移動することができます。

邪魔になっているセルは、中身を消すか別の場所へ移します。範囲が空いているのに出る場合は、次の原因をチェックします。

  • 結合セルには、スピルすることができない
  • Excelのテーブル(表)の中では、スピルする数式を使うことができない(テーブルの外へ出すか、範囲に変換する)
  • 結果の範囲がシートの端を超える(=VLOOKUP(A:A,A:C,2,FALSE)は列全体を検索値に指定しているため、104万8,576個の結果を返そうとする。=VLOOKUP(A2,A:C,2,FALSE)のように同じ行だけを参照して下へコピーするか、=VLOOKUP(@A:A,A:C,2,FALSE)のように@を追加する)
  • RAND・RANDARRAY・RANDBETWEENを使うと、出力する範囲の大きさが計算のたびに変わる(例: =SEQUENCE(RANDBETWEEN(1,1000)))
このエラーは、スピルされた配列数式またはピボットテーブル範囲のスピル範囲が空でない場合に発生します。 — スピル範囲が空ではない場合の説明より
公式情報を見る →

#NULL!は範囲の指定、#NUM!は数値の誤りで出る

#NULL!は範囲の区切りを間違えたときに、#NUM!は無効な数値が含まれるときに出ます。 #NULL!が出るのは、範囲演算子を間違えた場合やスペース(共通部分演算子)で交差しない2つの範囲を指定した場合です。たとえば=CELL("address",(A1:A5 C1:C3))は、2つの範囲が交差しないため#NULL!になります。

連続する範囲はコロンで=SUM(A1:A10)のように、離れた2つの範囲はカンマで=SUM(A1:A10,C1:C10)のように区切ります。#NUM!の主な原因は次のとおりです。

  • $1,000のように、通貨の書式付きで数値を入力した(1000と入力する)
  • IRR・RATEなど反復計算を行う関数で解が見つからない(ファイル→オプション→数式で反復計算を有効にし、最大反復回数を変更する)
  • 計算結果が大きすぎるか小さすぎて、Excelで表すことができる範囲を超えている
共通部分のない 2 つの領域を参照する場合は、論理和演算子としてカンマ (,) を使います。 — 正しい範囲演算子の使い方に関する記述より
公式情報を見る →
このエラーは、数式または関数に無効な数値が含まれている場合に表示されます。 — #NUM! エラーの冒頭の説明より
公式情報を見る →

循環参照の警告は数式が自身のセルを参照すると出る

循環参照の警告は、数式が直接または間接に自身のセルを参照すると表示されます。 循環参照とは、数式が自身のセルを計算の材料に使っている状態のことです。たとえばセルD3に=D1+D2+D3と書くと、Excelは計算を終えることができません。

セルF3の=SUM(A3:F3)や、A1の=B1+1とB1の=A1+1が互いを指す間接的なループも同じです。警告メッセージが出るのは、セッションで最初に循環参照ができたときです。 数式→エラー チェック→循環参照に出るセルを順に修正し、ステータスバーの「循環参照」の表示が消えるまで繰り返します。

反復計算を有効にすると、意図的に循環参照を許すこともできます。デフォルトでは100回の計算か、変化が0.001未満になった時点で止まります。

循環参照は、数式が直接的または間接的にそれ自体を参照するときに発生します。 — 循環参照の定義より
公式情報を見る →

IFERRORでエクセルのエラーを空白や0に置き換えて表示しない

エラーの原因を修正してもなお見せたくないときは、IFERRORで空白や0に置き換え、#N/AだけならIFNAを使います。 どの方法も、エラーを解消するのではなく表示を隠すだけです。本来修正すべき誤りまで隠さないように、置き換える範囲を先に考えておくといいでしょう。

IFERROR関数は7種類のエラーを空白や0に置き換える

IFERROR関数を使うと、7種類のエラーをすべて空白や0などの指定した値に置き換えることができます。 書式は=IFERROR(値, エラーの場合の値)で、数式がエラーでなければ数式の結果をそのまま出力します。たとえば=IFERROR(A2/A3,0)なら、割り算がエラーのときだけ0が表示されます。

2つ目の引数に0を指定するとエラーが0に、"" を指定すると空白に置き換わります。対象は、#N/A・#VALUE!・#REF!・#DIV/0!・#NUM!・#NAME?・#NULL!の7種類です。

列の削除による#REF!も、関数名の打ち間違いによる#NAME?も、同じ値に変わります。 IFERRORについてMicrosoftは、エラーを解決せず隠すだけなので、数式が正しいと確信できない限り勧めないとしています。

0も見せたくない場合は、条件付き書式で表示形式を;;;(セミコロン3つ)にすると、0が表示されなくなります。条件付き書式でエラーのセルの文字色を白にして隠す方法もあります。

残念ながら、IFERROR は実際にエラーを解決するのではなく、単にエラーを非表示にするだけです。 — #VALUE! エラーを他のもので置き換える方法の説明より
公式情報を見る →

IFNA関数はVLOOKUPの#N/Aだけを空白に置き換える

IFNA関数は、#N/Aのときだけ指定した値に置き換え、他のエラーはそのまま表示します。 構文は=IFNA(値, #N/Aの場合の値)です。よく使うのは、VLOOKUPをIFNAの中に入れ、見つからないときに「見つかりません」と表示する使い方です。

参照先の列を削除して出た#REF!のような誤りは、エラーのまま表示されます。VLOOKUPやXLOOKUPの「見つからない」だけを隠したいときは、IFERRORよりIFNAが適しています。

IFNA 関数は、数式が #N/A エラー値を返した場合に、指定した値を返します。それ以外の場合は、数式の結果を返します。 — IFNA 関数の冒頭の説明より
公式情報を見る →

エクセルの緑の三角はエラーチェックの設定で消すことが可能

緑の三角は、エラーチェックの設定でバックグラウンドのチェックをオフにすると表示されなくなります。 セルの左上に出る緑の三角は、エラー インジケーターと呼ばれます。エラー値が出ていないセルにも付くことがあり、文字列として保存された数値にも表示されます。

表示しないようにするには、ファイル→オプション→数式→エラー チェックを開き、バックグラウンドでエラー チェックを行うをオフにします。オフにすると、本物の誤りにも三角が付かなくなります。

[エラー チェック] の下の [バックグラウンドでエラー チェックを行う] チェック ボックスをオフにします。 — セルのエラー インジケーターが表示されないようにする手順より
公式情報を見る →

エラーは記号から原因を調べて修正し、隠すのは最後

エクセルのエラーは記号から原因を調べて修正し、それでも消えないものだけを最後に隠します。 記号を見れば原因の見当がつくので、見慣れないものが出たときは早見表の検索ボックスに入れて対処法を調べるといいでしょう。記号ごとに見直す場所は次のとおりです。

  • #VALUE!は文字列やスペース
  • #REF!は削除した参照先
  • #N/Aは元データにない検索値

VLOOKUPの#N/A(見つからない)だけを隠すならIFNAを、他のエラーもまとめて隠すならIFERRORを使います。 IFERRORは修正すべき誤りまで隠すため、数式が正しく動作することをチェックしてから使うといいでしょう。

ショートカットキーで操作を速くしたい場合は、別の記事を参考にしてください。Microsoft製品の他の記事は、分類ページから探すことができます。

FAQ

IFERRORとIFNAはどちらを使えばよいですか?
VLOOKUPやXLOOKUPで「見つからない」ときだけ置き換えたいなら、IFNAが適しています。IFNAは#N/Aだけを置き換えるため、参照先の削除で出た#REF!のような本物の誤りは、エラーのまま表示されています。IFERRORは7種類のエラーをすべて置き換えるので、数式が正しく動作することを確認してから使ってください。
列幅を広げても#####が消えないのはなぜですか?
数式の結果が負の日付か負の時刻になっている可能性があります。1900年日付システムでは日付と時刻を正の値にする必要があるため、数式を見直してください。負の結果になる場合は、結果の表示形式を日付以外に変更します。
循環参照を解消したのに警告が消えないのはなぜですか?
別のシートや、開いている別のブックに循環参照がある場合があります。数式が自身のセルへ間接的に戻る連鎖がある場合や、反復計算が有効になっている場合も原因になります。[数式]タブの[エラー チェック]から[循環参照]を開き、一覧に出るセルがなくなるまで修正してください。