Menu

Excelの#VALUE!エラーとは: 原因と直し方

#VALUE!は、数式が違う種類の値を受け取ったという意味で、たいていは数値が必要な場所の文字列です。C2に"n/a"やスペースが入っていると=B2+C2は失敗します。SUMは文字列を無視するので、=SUM(B2:C2)なら動きます。

このページのシートはすべて実際に動きます。数値や数式を変えると再計算されます。

#VALUE!は、数式が違う種類の値を受け取ったという意味で、ほとんどの場合、数値が必要な場所に文字列があります。セルのどれかにn/aが入っていると=B2+C2+D2は#VALUE!を返しますが、=SUM(B2:D2)は文字列を飛ばして数値を足します。

+でのセルの足し算とSUM
E3
ABCDEF
1RepJanFebMarTotal with +Total with SUM
2Ana12095110325325
3Ben80n/a105#VALUE!185
4Cy140130125395395
5Dee9010085275275
#VALUE! 引数の種類が違います。たとえば数値の場所に文字列があります。

C3に文字列のn/aが入っているので、E3は#VALUE!を表示します。F3は185を表示します。SUMは80と105を足し、文字列を無視するからです。C3に数値を入力すると、2つの合計が一致します。E3をクリックすると、グリッドの下に説明が表示されます。

+、-、*、/、^の演算子は、すべての値を数値に変えようとします。数値に見える文字列("5")やExcelが読める日付なら成功し、それ以外では失敗します。SUM、AVERAGE、MIN、MAX、PRODUCTなどの関数は、代わりに範囲の中の文字列を飛ばします。

空に見えるセルにスペースが入っている

いちばん見つけにくい#VALUE!です。セルは空白に見えますが、誰かがスペースを入力したか、ほかのシステムから取り込んだときにスペースが入っています。本当に空のセルは計算では0として扱われますが、スペースは文字列です。

見えないスペース
D3
ABCDE
1ItemPriceDiscountNet priceCharacters in C
2Desk240202202
3Chair85 #VALUE!1
4Lamp40400
#VALUE! 引数の種類が違います。たとえば数値の場所に文字列があります。

C3とC4はどちらも空に見えますが、D3は#VALUE!を、D4は40を表示します。LENの列を見ればわかります。C3には1文字、スペースが入っています。C3をクリックして削除すると、D3は85を表示します。

Excelで列全体をきれいにするには、列を選択してCtrl+H(MacでもControl+H)を押し、検索する文字列にスペースを1つ入力し、置換後の文字列は空のまますべて置換をクリックします。文字列の中のスペースも取り除かれるので、数値の列にだけ使ってください。文字列にはTRIMを使います。

文字列として保存された日付で#VALUE!になる

Excelは、文字列で入力された日付も地域の日付形式に合っていれば読むので、"2026-03-15"+30はどこでも動きます。15.03.2026のような日付は、米国英語に設定されたExcelにとっては日付ではなく文字列なので、日数を足すと#VALUE!になります。

米国式Excelでの日・月・年の文字列
B3
ABC
1DeliveredDue (+30 days)Fixed
22026-03-152026-04-14
315.03.2026#VALUE!2026-04-14
#VALUE! 引数の種類が違います。たとえば数値の場所に文字列があります。

B2は2026-04-14を表示します。ISO形式の文字列は日付として読まれました。B3は#VALUE!を表示します。C3はRIGHT、MID、LEFTで文字列から年、月、日を取り出し、DATEで本物の日付を作って30日を足すので、やはり2026-04-14になります。

列全体ならデータ > 区切り位置のほうが手早く済みます。次へを2回クリックし、手順3で日付とDMYを選んで完了をクリックします。文字列の日付はたいていCSVファイルや、Webページからのコピーと貼り付けから来ます。日付の作り方はDATE関数のページで詳しく説明しています。

関数が使えない引数を受け取る

#VALUE!は、関数が正しい種類だがありえない値の引数や、違う種類の値の引数を受け取ったときにも表示されます。

関数が使えない引数
B2
ABC
1CodeResultWhat is wrong
2AB-1042#VALUE!negative length
3AB-1042#VALUE!start position 0
4AB-1042#VALUE!column number 0
55#VALUE!text typed as an argument
#VALUE! 引数の種類が違います。たとえば数値の場所に文字列があります。

どの数式も規則を1つずつ破っています。LEFTはマイナスの文字数を受け取れず、MIDは1から数え始め、VLOOKUPの列番号も1から始まり、AVERAGEは範囲の中の文字列は飛ばしますが数式に直接入力した文字列は飛ばしません。B2の-1を2に変えると、ABが返ります。

ほかにも、Excelのバージョンやほかのファイルが関係する原因が2つあります:

  • 古いExcelでの配列数式。 Excel 2019以前では、=SUM(IF(A2:A10="North",B2:B10))のように範囲全体に対して動く数式は、Ctrl+Shift+Enter(MacではCmd+Shift+Enter)で確定する必要があります。普通のEnterだと#VALUE!を返すことがあります。Excel 2021とMicrosoft 365ではその必要はありません。
  • 閉じたブックを指すSUMIFやCOUNTIF。 これらの関数は、ほかのブックを開いている間しか読めません。参照元のファイルを開くか、閉じたファイルでも動くSUMPRODUCTに切り替えます。

#VALUE!の原因になっているセルを探す

いくつものセルを使う長い数式は、そのどれで失敗してもおかしくありません。Excelでは:

  1. 数式のセルを選択して数式 > 数式の検証を選びます。検証を何度もクリックすると、Excelが数式を1段階ずつ計算し、#VALUE!が最初に現れる場所を示します。
  2. または数式 > エラーチェック > エラーのトレースを選びます。関係するセルを矢印が指します。
  3. 怪しいセルを=ISTEXT(C3)や=LEN(C3)で調べます。セルの左に寄っている数値はたいてい文字列です。変換の方法は文字列を数値に変換するを参照してください。

エラーを隠すのではなく数式を直す

=IFERROR(B2+C2+D2,0)は#VALUE!を0に変えますが、Benにとってその0は間違いです。データのある月には185を売り上げているからです。代わりに、文字列を飛ばす合計を書きます。

文字列を飛ばす合計
E2
ABCDE
1RepJanFebMarTotal
2Ana12095110
3Ben80n/a105185
4Cy140130125395
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

やってみよう: C3のn/aがあると+での足し算が壊れます。E2に、Anaの3か月を足し、そのうち1つに文字列が入っていても動く数式を書いてください。

チェックでは、n/aがAnaの行にあるシートのコピーでも数式を試すので、+を使った数式はそこで失敗します。合計ではない計算で文字列のセルを0として数えたいときは、囲みます。=N(C3)は文字列なら0を、数値ならその数値を返します。=IFERROR(C3*1,0)は、'5のように数値に見える文字列も5に変えます。

よくある質問

Excelの#VALUE!はどういう意味ですか?

数式が違う種類の値を受け取ったという意味です。たいていは、C2にn/aやスペースが入っているときの=B2+C2のように、数値が入るべき場所に文字列があります。=LEFT(A2,-1)のように、関数が使えない引数を受け取ったときにも表示されます。

セルを足すと#VALUE!になるのに、SUMなら動くのはなぜですか?

+演算子はすべての値を数値に変えようとして、文字列で失敗します。そのため1つのセルに文字列があると=B2+C2+D2は#VALUE!を返します。=SUM(B2:D2)は範囲の中の文字列を飛ばし、そこにある数値を足します。

Excelで日付の#VALUE!を直すには?

その日付は、地域の設定ではExcelが日付として読めない文字列です。たとえば米国式の日付に設定されたExcelの15.03.2026です。=DATE(RIGHT(A2,4),MID(A2,4,2),LEFT(A2,2))で作り直すか、データ > 区切り位置で列を変換し、手順3で日付の形式DMYを選びます。

#VALUE!の原因になっているセルを探すには?

数式を選択して数式 > 数式の検証で1段階ずつ計算をたどるか、数式 > エラーチェック > エラーのトレースを選んで関係するセルに矢印を引きます。空に見えるのに=LEN(C2)が1を返すセルには、スペースが入っています。

Excelで#VALUE!を表示しないようにするには?

=IFERROR(B2+C2,0)はどんなエラーの代わりにも0を表示します。ただしIFERRORは見たいはずの間違いも隠してしまうので、原因を直すか、=SUM(B2:C2)のように文字列を飛ばす数式を使うほうがよい方法です。

Coddyのプログラミング言語のイラスト

Coddyでコードを学ぼう

始める