まとめ
#VALUE! エラーは、Excelが想定していないデータ型を受け取ったことを意味します。多くの場合、数値が必要な場所にテキストが入っています。まず以下の4点を確認してください:
- 数値計算にテキスト文字列が混在している
- セルに非表示のスペースがある(空に見えるが実は空ではない)
- 実際の日付シリアル値ではなくテキストとして保存された日付
- Ctrl+Shift+Enter で確定されていない配列数式(Excel 2019以前)
手っ取り早い回避策:原因を調査している間は IFERROR() で数式をラップしてエラーを非表示にしましょう。テキストを数値に変換するには VALUE() を使います。
何が起きているのか
Excelが #VALUE! を表示するとき、Excelは壊れているわけではありません。数式自体は正しく理解しています。問題は渡されたデータにあります。Excelが「この計算のやり方はわかるけど、数値ではなく文字が渡された」と言っているようなものです。
よくある原因は次のとおりです:
- テキストへの算術演算: A1に5の代わりに「five」が入っている状態での
=A1 + B1 - スペースだけのセル: スペースが1つ入ったセルは空白に見えますが、Excelはテキストとして扱います
- テキスト形式の日付: CSVやAPIのインポートでは「2024-01-15」のような文字列として日付が読み込まれ、Excelの日付シリアル値になりません
- 引数の型が間違っている: 単一の値を期待する関数に範囲を渡すケース —
=LEN(A1:A10)が典型例です - 数値に含まれる非数値文字: 「$1,200」や「1.5kg」は数値のように見えますが、Excelは算術演算できません
問題の診断
手順1 — 問題のあるセルを特定する
#VALUE! が表示されているセルをクリックします。次に 数式 → エラーチェック → エラーのトレース に進みます。数式に影響を与えているすべてのセルを指す青い矢印が表示されます。一つひとつ確認していきましょう。
手順2 — 数値がテキストとして保存されていないか確認する
怪しいセルを選択します。セルの左上隅に小さな緑の三角形があれば、Excelが数値がテキストとして保存されていることを警告しています。より詳しく確認するには、次のVBAコードでセルの型を正確に調べられます:
Sub CheckCellType()
Dim c As Range
Set c = ActiveCell
MsgBox "Type: " & TypeName(c.Value) & ", IsText: " & (c.NumberFormat = "@")
End Sub
手順3 — 非表示のスペースを探す
怪しいセルの隣の空の列に、次の数式を入力します:
=LEN(A1)
完全に空のセルは0を返します。1以上の値が表示された場合は、スペース、ノーブレークスペース、またはインポート時に紛れ込んだ余分な改行が隠れています。
修正方法
修正1 — VALUE() でテキストを数値に変換する
セルに「123」がテキストとして入っている場合は、次のようにラップします:
=VALUE(A1) + B1
関数を使いたくない場合は、次の数式テクニックでテキスト数値を直接変換できます:
=A1 * 1
=A1 + 0
=--A1
二重否定(--)は最もよく使われる省略形です。値を負にしてから再び正に戻すことで、副作用として型変換が行われます。
修正2 — TRIM() と CLEAN() で非表示スペースを除去する
TRIM() は先頭、末尾、および連続するスペースを除去します。CLEAN() はさらに踏み込んで、インポートデータに紛れ込む改行などの印刷不可能な文字も削除します。組み合わせて使いましょう:
=VALUE(TRIM(CLEAN(A1)))
一つ注意点:ウェブスクレイピングデータによく含まれるノーブレークスペース(ASCII 160)は TRIM() でも除去されません。その場合は SUBSTITUTE() が必要です:
=SUBSTITUTE(A1, CHAR(160), "")
修正3 — テキスト形式の日付を修正する
「2024-01-15」のような文字列としてインポートされた日付を実際の日付シリアル値に変換するには DATEVALUE() を使います:
=DATEVALUE(A1)
変換後のセルを日付形式に設定してください。米国形式の日付(「01/15/2024」)の場合は、TEXT() をラップして使います:
=DATEVALUE(TEXT(A1,"MM/DD/YYYY"))
数式を使わない方法もあります。列を選択して データ → 区切り位置 に進み、何も変更せずに「完了」をクリックします。Excelが終了時に値を再解析し、テキスト日付が自動的に修正されることがよくあります。
修正4 — デバッグ中は IFERROR() でエラーを非表示にする
=IFERROR(A1 + B1, 0)
=IFERROR(VLOOKUP(D1, A:B, 2, 0), "見つかりません")
エラーの代わりにフォールバック値を返します。根本原因を調査している間、下流のセルのブロックを解除するのに便利です。ただし、恒久的な修正として残しておくのはやめましょう — 本当の問題を隠してしまいます。
修正5 — テキストが含まれる範囲でも SUM() を安全に使う
SUM() はテキストセルを暗黙的にスキップします。+ 演算子はそうではありません:
-- テキストを含むセルがあるとエラーになる:
=A1 + A2 + A3
-- テキストセルを安全にスキップする:
=SUM(A1:A3)
-- エラーもスキップする(不正なデータに有効):
=AGGREGATE(9, 6, A1:A3)
+ を SUM() に切り替えるだけで、驚くほど多くの #VALUE! エラーが解決します。
修正6 — 形式を選択して貼り付けで列ごと変換する
テキスト数値の列をまとめて変換したい場合は、数式を書く必要はありません:
- 空のセルに
1と入力してコピーする - テキスト数値が入っている列を選択する
- 右クリック → 形式を選択して貼り付け → 乗算
- Excelが各セルに1を掛けることで、テキストが実際の数値に変換される
確認方法
修正を適用したら、以下の確認で実際に修正されたかどうかを素早くチェックできます:
#VALUE!エラーが消えて実際の結果が表示されている- セル内で数値が右揃えになっている(テキストはデフォルトで左揃え)
=ISNUMBER(A1)がTRUEを返す- 数値であるべきセルで
=ISTEXT(A1)がFALSEを返す
次の診断用数式は、すべてのセルを一括で分類します:
=IF(ISNUMBER(A1), "数値", IF(ISTEXT(A1), "テキスト", IF(ISBLANK(A1), "空白", "その他")))
参考資料
- Microsoft サポート — #VALUE! エラーを修正する方法
- Excel 関数:
IFERROR、ISERROR、VALUE、TRIM、CLEAN、DATEVALUE - インポート時のデータ型一括変換には Power Query も有効な選択肢です

