Excelの #VALUE!・#REF!・#DIV/0!・#NAME? の原因と直し方
Excelの4大エラーを、原因と最初に見る場所で整理します。#DIV/0!は割る数が0か空白、#REF!は参照先の削除、#VALUE!は文字列の混入、#NAME?は名前の打ち間違いです。IFERRORで隠す前に原因を確かめる手順を、Microsoftのサポート情報をもとに解説します。
この記事のポイント
- #DIV/0!は割る数が0か空白、#REF!は参照先の削除が原因
- IFERRORは全部のエラーを隠すので、原因を直す前に使うと見逃す
- 「Excelエラー辞典を整える」でエラー別の原因と直し方を引ける
- Q.
- ExcelのIFERRORでエラーを消してよい?
- A.
- 原因を確かめたあとなら使えます。IFERRORは#DIV/0!も#REF!も#VALUE!も同じように隠すので、先に使うと本当の誤りに気づけなくなります。まずエラーの種類から原因を探し、直せない場合だけ使います。
Excelのセルに「#」で始まる記号が出たとき、何が悪いのかを一目で言える人は多くありません。エラーの種類ごとに、原因はほぼ決まっています。
結論を先に書きます。
#DIV/0!は割る数が0か空白、#REF!は参照していたセルや行・列の削除、#VALUE!は計算できない文字列の混入、#NAME?は関数名や名前の打ち間違いです。 エラー表示は、どこを見ればよいかを教えてくれる手がかりです。IFERROR関数で隠す前に、まずこの手がかりから原因を探します。
この記事の内容は、Microsoftサポートの各エラーの解説(2026年9月時点)をもとにしています。VLOOKUPの #N/A は別に VLOOKUPの#N/A、犯人はほぼこの4つ で整理しているので、ここでは扱いません。
4つのエラーの早見表
| エラー | 意味 | 主な原因 | 最初に見る場所 |
|---|---|---|---|
| #DIV/0! | 0で割った | 割る数が0、または空白のセル | 割り算の分母のセル |
| #REF! | 参照が無効 | 参照先のセル・行・列を削除した | 数式の中の「#REF!」の位置 |
| #VALUE! | 値の型が違う | 計算できない文字列が混ざっている | 数式が参照している各セルの中身 |
| #NAME? | 名前が分からない | 関数名・定義した名前の打ち間違い、引用符の漏れ | 数式の関数名と、文字列を囲む「”」 |
#DIV/0!:割る数が0か空白
Microsoftのサポートによると、#DIV/0!は「=5/0」のような式を入れたとき、または0や空白のセルを数式で参照したときに出ます。
典型例は、売上÷件数で件数のセルが空欄のとき、前年比を出す列で前年が0のときなどです。
| セル | 内容 |
|---|---|
| A2 | 1200 |
| A3 | (空白) |
| B2 | =A2/A3 → #DIV/0! |
直し方は、割る数が0や空白にならないようにすることです。それでも空白の行が出る表では、Microsoftが示すIF関数で、分母があるかを先に判定します。
=IF(A3,A2/A3,0):A3が0や空白なら0を返す=IF(A3,A2/A3,""):A3が0や空白なら空白を返す=IFERROR(A2/A3,0):エラーになったら0を返す
「0を返す」と「空白を返す」では、あとの集計が変わります。0を返すと平均の計算に0として入りますが、空白は計算に入りません。目的に応じて選びます。
#REF!:参照先を消してしまった
#REF!は、数式が参照していたセルがなくなったときに出ます。Microsoftのサポートに載っている例では、=SUM(B2,C2,D2) と書いていて列Cを削除すると、数式が =SUM(B2,#REF!,D2) に変わります。
直し方は3つです。
- 削除した直後なら、Ctrl+Zで元に戻す
- 戻せないときは、数式の「#REF!」の部分を、正しいセルの参照に書き直す
- 今後のために、
=SUM(B2:D2)のように範囲で書いておく
VLOOKUP関数で、範囲より大きい列番号を指定したときにも #REF! が出ます。Microsoftの例では、=VLOOKUP(A8,A2:D5,5,FALSE) は範囲が4列しかないのに5列目を求めているため、エラーになります。範囲を広げるか、列番号を範囲内に直します。INDEX関数も同じで、=INDEX(B2:E5,5,5) は4行4列の範囲に5行5列目を求めているので、範囲外です。
#VALUE!:計算できない文字列が混ざっている
#VALUE!は、数値として計算できない値が数式に入っているときに出ます。原因は、Microsoftのサポートでは次のように分けられています。
| 原因 | 例 | 対処 |
|---|---|---|
| 見えないスペースが入っている | 数字の前後にスペースがある | 検索と置換でスペースを削除する |
| 文字列として保存された数字 | 先頭にアポストロフィがある | 「区切り位置」機能などで形式を直す |
| 演算子で足している | =A2+B2+C2 に文字列のセルが含まれる | =SUM(A2:C2) のように関数を使う |
| 日付が文字列になっている | =E10-D10 の日付が文字列 | DATE関数で日付に直す |
演算子の足し算は文字列があるとエラーになりますが、SUM関数は文字列を無視して計算します。たとえばA2に「1,200円」のように単位が付いた文字列が入っていると、=A2*2 は #VALUE! になりますが、SUM関数ではそのセルが無視されるだけで、合計に入りません。エラーが消えても、合計が足りなくなる点には注意が必要です。
#NAME?:名前を打ち間違えた
#NAME?は、Excelが数式の中の名前を認識できないときに出ます。Microsoftのサポートによると、原因は主に次のとおりです。
- 関数名の打ち間違い(もっとも多い原因)。関数名の入力中に出る候補を使うと防げる
- 定義していない名前を使っている(
=SUM(Profit)で「Profit」が未定義) - 定義した名前のつづりを間違えている
- 文字列を「“」で囲んでいない(
=CONCATENATE("has")が正しく、=CONCATENATE(has)はエラー) - 範囲のコロンを抜かしている(
=INDEX(B2:B12)が正しく、=INDEX(B2 B12)はエラー) - 必要なアドインが無効になっている
IF関数で文字列を比べるときに、=IF(A1=合格,"○","×") と、「合格」を「“」で囲まないと、#NAME? になります。=IF(A1="合格","○","×") のように囲みます。IF関数の組み立ては IF関数を整える で、入力欄を埋めるだけで作れます。
IFERRORで隠す前に原因を見る
IFERRORは、数式がどのエラーになっても、指定した値に置き換える関数です。便利ですが、#DIV/0!も#REF!も#VALUE!も#NAME?も、同じように隠してしまいます。
たとえば =IFERROR(A2/A3,0) と書いておくと、A3が空白でも0が表示されます。ところが、本当は割る数のセルを削除していて #REF! になっていた場合でも、0と表示されてしまい、誤りに気づけません。
次の順番で使うと、見逃しを減らせます。
- エラーの種類を確認する
- 原因を直せるなら、先に直す
- 空欄が正しい状態(分母が空の行がある表など)のときだけ、IF関数かIFERRORで表示を整える
IFERRORの代わりに、エラーごとに条件を分けたIF関数を使うと、想定外のエラーを隠さずに済みます。たとえば =IF(A3=0,"",A2/A3) なら、A3が0のときだけを空白にし、A3が #REF! なら、そのままエラーが出て気づけます。
まとめ
#DIV/0!は割る数が0か空白、#REF!は参照先の削除、#VALUE!は文字列の混入、#NAME?は名前の打ち間違いが原因です。IFERRORは、どのエラーも同じように隠すので、原因を確かめてから使います。
エラーの意味と直し方を、再現デモで確かめたいときは Excelエラー辞典を整える が使えます。数式の組み立ては IF関数を整える で試せます。