【Excel】#VALUE!エラーの原因と直し方|よくある原因と対処法を解説

Excelで「#VALUE!」エラーが表示される原因と直し方を解説する記事のサムネイル画像。
  • URLをコピーしました!

Excelで数式や関数を使用していると、「#VALUE!」エラーが表示されることがあります。

主な原因は、数値として計算できない文字列が含まれていることや、関数の引数に不適切な値を指定していること、複数の範囲の大きさが合っていないことです。

この記事では、「#VALUE!」エラーが表示される主な原因と直し方を、具体的な数式を使って解説します。

目次

#VALUE!エラーの原因を調べる方法

「#VALUE!」エラーが表示されても、数式が複雑だと、どこに原因があるのか分かりにくい場合があります。
そのようなときは、Excelの[数式の検証]機能を使うと、数式がどのように計算されているかを順番に確認できます。

例えば、A2セルに「りんご」、B2セルに「100」、C2セルに「5」が入力されているとします。
このとき、=A2*B2とすると、文字列の「りんご」を数値に変換できず、計算に失敗するため「#VALUE!」エラーが発生します。

ExcelのE2セルに「#VALUE!」エラーが表示され、数式バーの「=A2*B2」を赤枠で強調した画像。正しい計算式は、価格と個数を掛け合わせる「=B2*C2」であることを吹き出しで示している。

原因を調べる手順は次のとおりです。

STEP
「#VALUE!」エラーが表示されているセルを選択する

「#VALUE!」が表示されているセルを選択します。

ExcelのE2セルに表示された「#VALUE!」エラーを赤枠で囲み、原因を調べるために選択するセルを示した画像。
STEP
[数式]タブの[数式の検証]をクリックする

[数式]タブの[数式の検証]をクリックします。

Excelの[数式]タブにある[数式の検証]ボタンを赤枠で示した画面。下部には「#VALUE!」エラーが発生しているE2セルが表示されている。
STEP
[検証]ボタンをクリックして、計算過程を順番に確認する

[検証]ボタンをクリックして、計算過程を順番に確認します。
数式内のセル参照が実際の値に置き換わっていくため、どの計算でエラーが発生したかを確認できます。

Excelの[数式の計算]ダイアログで[検証]ボタンを使い、「=A2*B2」のセル参照を実際の値に置き換えながら、「#VALUE!」エラーが発生するまでの計算過程を確認するGIF画像。

なお、[数式の検証]はエラーの原因を調べる機能です。
エラー自体を自動で修正するものではありません。

見えない空白や特殊文字が含まれている場合

数値に見えるデータでも、余分な空白や特殊文字が含まれていると、「#VALUE!」エラーが発生する場合があります。

特に、Webサイトなどからコピーしたデータには、通常のスペースとは異なる特殊な空白が含まれていることがあります。
例えば、A1セルに次の数式を入力します。

="100"&CHAR(160)

CHAR(160)は、通常の半角スペースとは異なる「改行しないスペース」を表します。
A1セルには「100」とほぼ同じ見た目の文字列が表示されますが、次の数式では「#VALUE!」エラーが発生します。
=VALUE(A1)

この特殊な空白を削除するには、SUBSTITUTE関数を使用します。
=VALUE(SUBSTITUTE(A1,CHAR(160),""))

この数式では、CHAR(160)を空文字に置き換えてから数値に変換するため、「100」が返されます。
なお、TRIM関数で通常の半角スペースを取り除くことはできますが、CHAR(160)などの特殊な空白は削除できません。
数値に変換できない場合は、不要な文字や特殊な空白が含まれていないか確認してください。

原因1:関数の引数に不適切な値を指定した

引数に特定の数値以上を指定しなければならないにもかかわらず、その数値未満や文字を指定してしまうと「#VALUE!」エラーが発生してしまう場合があります。

例1:VLOOKUP関数

VLOOKUP関数は第3引数に何列目のデータを取得するかを指定します。この引数に、0以下もしくは文字を指定すると「#VALUE!」エラーが発生します。

エラーサンプル:第3引数の指定に誤りがある
=VLOOKUP("株式会社あいう",D3:F6,0,FALSE)   // 第3引数に0以下を指定したため、エラー
=VLOOKUP("株式会社あいう",D3:F6,"A",FALSE)  // 第3引数に文字を指定したため、エラー

解決方法は、第3引数に1以上の整数を指定してください。

また、VLOOKUP関数の「#VALUE!」エラーは第3引数の指定ミスである可能性が高いことを覚えてください。

=VLOOKUP("ヤマダ",D3:F6,3,FALSE) 

例2:LEFT関数/RIGHT関数

LEFT関数は文字列の先頭〇文字を取得し、RIGHT関数は末尾〇文字を取得する関数です。
ともに第1引数に元となる文字列、第2引数に何文字取得するかを指定します。

LEFT関数やRIGHT関数は、第2引数に0未満の数値や文字を指定すると、「#VALUE!」エラーが発生します。

エラーサンプル:第2引数の指定に誤りがある
=LEFT("ABC",-1)     // 第2引数に0未満の数値を指定したため、エラー
=RIGHT("ABC","B")   // 第2引数に文字を指定したため、エラー

解決方法は、第2引数に0以上の数値を指定することです。
LEFT関数の第2引数にSEARCH関数を組み合わせると、指定した文字までを取得できます。

// 先頭1文字を取得する(「A」と表示される)
=LEFT("ABC",1)

// 末尾1文字を取得する(「C」と表示される)
=RIGHT("ABC",1)

// 先頭から"B"まで取得する(「AB」と表示される)
=LEFT("ABC",SEARCH("B","ABC"))

例3:MID関数

MID関数は〇文字目から、×文字取得する関数です。

MID関数の第2引数には、文字を取り出し始める位置を1以上の数値で指定します。第3引数には、取り出す文字数を0以上の数値で指定します。
第2引数に0以下の数値を指定した場合や、第3引数に負の数を指定した場合は、「#VALUE!」エラーが発生します。

エラーサンプル:第2引数、第3引数の指定に誤りがある
=MID("ABCDEF",-1,10)    // 第2引数に0未満の数値を指定したため、エラー
=MID("ABCDEF",3,"あ")   // 第3引数に文字を指定したため、エラー

第2引数には1以上、第3引数には0以上の数値を指定してください。

// 「BCD」と表示される
=MID("ABCDEF",2,3)

// 「ABC」と表示される
=MID("ABCDEF",1,3)

原因2:引数で指定した範囲の行数や列数が合っていない

例:XLOOKUP関数/SUMPRODUCT関数

XLOOKUP関数は、検索範囲と戻り範囲の対応する行数または列数が異なると、「#VALUE!」エラーが発生します。
SUMPRODUCT関数は、指定した範囲の行数や列数が一致しないと、「#VALUE!」エラーが発生します。

エラーサンプル:D3:D6とE3:E16で範囲の大きさが異なる
// 第2引数と第3引数の範囲(行数)が異なるため、エラー
=XLOOKUP("ヤマダ",D3:D6,E3:E16)

// 第1引数と第2引数の範囲(行数)が異なるため、エラー
=SUMPRODUCT(D3:D6,E3:E16)

XLOOKUP関数やSUMPRODUCT関数で「#VALUE!」エラーが表示された場合は、まず範囲の指定を確認してください。

XLOOKUP関数では、検索範囲と戻り範囲の対応する行数または列数をそろえてください。
SUMPRODUCT関数では、指定する各範囲の行数と列数をそろえてください。

=XLOOKUP("ヤマダ",D3:D6,E3:E6)
=SUMPRODUCT(D3:D6,E3:E6)

原因3:検索対象にない文字を検索した

SEARCH関数やFIND関数で第2引数の文字列から、第1引数の文字を検索する際に、存在しない文字を検索するとエラーになります。

例:SEARCH関数/FIND関数

SEARCH関数とFIND関数はともに、第2引数(文字列)の中に第1引数(文字/文字列)が先頭から何文字目にあるかを返す関数です。

SEARCH関数とFIND関数の違いは、大文字小文字を区別するかとワイルドカードの使用可否の2点です。
SEARCH関数は、大文字小文字を区別しません。ワイルドカードを使用できます。
FIND関数は、大文字小文字を区別します。ワイルドカードを使用できません。

これらの関数は検索する文字が含まれていないと、「#VALUE!」エラーが発生します。
なお、FIND関数では、検索する文字と検索対象の文字の大文字・小文字が一致しない場合も、「#VALUE!」エラーが発生します。

エラーサンプル1:"ABC"の中に"Z"は何番目にあるか
// ”ABC”の中に"Z"は存在しないため、エラー
=SEARCH("Z","ABC")

// ”ABC”の中に"Z"は存在しないため、エラー
=FIND("Z","ABC")

エラーサンプル2:"ABC"の中に"b"は何番目にあるか
// FIND関数は大文字と小文字を区別するため、エラー(SEARCH関数なら2が返る)
=FIND("b","ABC")

エラーサンプル3:"ABCDE"の中に"B*C"は何番目にあるか
// FIND関数はワイルドカードを使用できないため、"*"の文字を検索する(SEARCH関数なら2が返る)
=FIND("B*C","ABCDE")

解決方法は、検索対象にない文字を検索した場合を想定しているとき、IFERROR関数を使用すると、エラーメッセージや別の値を表示できます。

第1引数には検索する文字、第2引数には検索対象の文字列を指定します。順番を逆にすると、意図した結果にならない場合や、「#VALUE!」エラーになる場合があるため注意してください。

FIND関数を使用しているときに、大文字小文字の区別をせずに文字の位置を取得したい場合は、SEARCH関数を使用してください。

【検索する文字が存在しなかった場合、エラーメッセージを返す】
 ※セルA1に"Z"、セルA2に"ABC"が入力されているとします。
=IFERROR(SEARCH(A1,A2),"["&A1&"]は["&A2&"]にありません")
=IFERROR(FIND(A1,A2),"["&A1&"]は["&A2&"]にありません")
 ※ 上2つは 「[Z]は[ABC]にありません」と表示される

【検索する文字が存在しない場合、「-1」を返す】
// 「-1」と表示される
=IFERROR(SEARCH("Z","ABC"),-1)

// 「-1」と表示される
=IFERROR(FIND("Z","ABC"),-1)

【大文字小文字を区別せずに文字を検索する(FIND関数は不可)】
//「3」と表示される
=SEARCH("c","ABC")

【ワイルドカードを使用して検索する(FIND関数は不可)】
// 「2」と表示される
=SEARCH("B*C","ABCDE")

原因4:文字列を数値として扱った

文字列を数値として扱うと「#VALUE!」エラーが発生します。

例1:文字列を四則演算してしまった

文字を四則演算してしまうと「#VALUE!」エラーが発生します。
※四則演算とは、足し算や引き算、掛け算、割り算のことです。

エラーサンプル:文字列に四則演算(+, -, *, /)をした
// "ABC"に1を足せない(文字を結合したい場合は & を使用する)
="ABC"+1  

// "ABC"から"A"を引けない(文字を削除したい場合は SUBSTITUTE関数を使用する)
="ABC"-"A"

解決方法は、文字列に四則演算を使用しないことです。

文字列を結合する場合は「&」、文字列内の特定の文字を削除したい場合は「SUBSTITUTE関数」を使用します。

【文字列の連結を行う】
// "ABC"と1を結合して、「ABC1」と表示される
="ABC"&1

【文字列を削除する】
// "ABC"から"A"を削除して、「BC」と表示される
=SUBSTITUTE("ABC","A","")

例外的に、数式内に全角で入力した数字などの数値に変換可能な文字は、Excelによって半角に自動変換されるため計算できます。
例:「=11+11」と入力すると、「22」が表示されます。

例2:VALUE関数

VALUE関数は、文字列を数値に変換する関数です。
例えば、「=VALUE("1,000")」なら「1000」を返します。

VALUE関数の引数に数値へ変換できない文字を入れてしまうと「#VALUE!」エラーが発生します。

エラーサンプル:"1,000A"を数値に変換
// "1,000A" の "A" があると数値に変換不能
=VALUE("1,000A")

解決方法は、数値に変換できない文字が誤って含まれている場合は、その文字を削除または修正してください。
数値に変換できない値が入力される可能性もある場合は、IFERROR関数を使用すると、エラーメッセージや別の値を表示できます。

【数値に変換できなかった場合、エラーメッセージを返す】
// 「数値へ変換できませんでした。」と表示される
=IFERROR(VALUE("1,000A"),"数値へ変換できませんでした。")

【数値に変換できなかった場合、「-1」を返す】
// 「-1」と表示される
=IFERROR(VALUE("1,000A"),-1)

数値か文字列かを確認する方法

数値に見えるデータでも、実際には文字列として保存されている場合があります。
セルの値が数値かどうかを調べるには、ISNUMBER関数を使用します。

例えば、A1セルに確認したい値が入力されている場合、次の数式を入力します。
=ISNUMBER(A1)

結果が「TRUE」なら数値、「FALSE」なら数値以外です。

A1セルの内容数式の結果
数値の 100TRUE
文字列の100(先頭に ' を付けて入力)FALSE
文字列の 100AFALSE

文字列として保存されている数値は、VALUE関数で数値に変換できます。
=VALUE(A1)

ただし、文字や特殊な空白などが含まれている場合は、変換できずに「#VALUE!」エラーになることがあります。

原因5:引数に型の違う値を指定した

引数でセルの範囲や論理値を指定するところを、誤って文字列にしてしまうと「#VALUE!」エラーが発生します。

例1:SUM関数/AVERAGE関数

SUM関数やAVERAGE関数などの引数で範囲を指定するところを文字列にしてしまうと「#VALUE!」エラーが発生します。

エラーサンプル:範囲を指定したつもりで、文字列にしてしまった
 ※セルA1に「1」、セルA2に「2」、セルA3に「3」が入力されているとします。
// 下2つは、引数を「"」で囲っているため、範囲とならずに文字列になってしまった
=SUM("A1:A3")
=AVERAGE("A1:A3")

解決方法は、ダブルクォーテーションを外すことです。

セルA1に「1」、セルA2に「2」、セルA3に「3」が入力されているとします。
// 「6」と表示される
=SUM(A1:A3)

// 「2」と表示される
=AVERAGE(A1:A3)

例2:IF関数

IF関数の第1引数に条件式を指定するとき、条件式全体をダブルクォーテーションで囲むと「#VALUE!」エラーが発生します。

エラーサンプル:条件式(論理値)を指定したつもりで、文字列にしてしまった
 ※セルA1に「50」が入力されているとします。
=IF("A1<100","A","B")  // 「"」で囲っているため、文字列になってしまった

解決方法は、ダブルクォーテーションを外すことです。

セルA1に「50」が入力されているとします。
=IF(A1<100,"A","B")  // 「A」と表示される

IF関数の第2引数や第3引数に別の数式を指定している場合は、それぞれの数式に誤りがないかを優先して確認してください。
数式を単独でセルに入力すると、どちらでエラーが発生しているかを確認できます。

AIを使って「#VALUE!」エラーを修正する方法

Excelでは、AIによるエラー修正機能を利用できる場合があります。
ただし、利用できるかどうかは、Microsoft 365の契約内容やExcelのバージョンなどによって異なります。

ここでは、文字列の「りんご」と価格を掛け算して「#VALUE!」エラーが発生した数式を、AIで修正する手順を紹介します。

ExcelのE2セルに「#VALUE!」エラーが表示され、数式バーの「=A2*B2」を赤枠で強調した画像。正しい計算式は、価格と個数を掛け合わせる「=B2*C2」であることを吹き出しで示している。
STEP
緑の三角の上にマウスを移動させる

値のエラーのポップアップを表示させるため、エラーのあるセルの左上にある緑の三角の上にマウスを移動させます。このとき、クリックは不要です。

Excelの「#VALUE!」エラーが表示されたセルの左上にある、緑色のエラーインジケーターを赤枠で示した画像。
STEP
エラーを修正させる

AIにエラーを修正させるため、[このエラーを修正]をクリックします。

Excelの「値のエラー」ポップアップに表示された、緑色の[このエラーを修正]ボタンを赤枠で示した画像。AIによる数式の修正を実行する操作。
STEP
AIが修正を完了するまで待機する

AIが修正を完了するまで待機します。
[完了]などが表示されたら、AIによる修正が終了の合図です。

STEP
数式を確認する

数式を確認して、問題なければ修正完了です。

ExcelのAI修正後の画面。E2セルの数式が「=B2*C2」に変更され、「#VALUE!」エラーが解消されて計算結果「500」が表示されている。

AIによる修正の注意点

AIによる修正は便利ですが、注意点があります。

AIが修正する数式は毎回同じとは限らない

AIが修正する数式は、同じエラーでも毎回同じになるとは限りません。
例えば、セルE2に「=A2*B2」と入力して「#VALUE!」エラーが発生した場合、AIが「=B2*C2」に修正することがあります。
一方、下の画像のように、空欄の判定や数値への変換処理を加えた、複雑な数式に修正する場合もあります。

Excelで同じ「#VALUE!」エラーをAIに修正させた際、IF関数やVALUE関数、SUBSTITUTE関数を組み合わせた複雑な数式に変更された例。E2セルには計算結果「500」が表示され、前の例とは異なる数式で修正されたことを示している。

どちらも計算結果は「500」ですが、数式の処理内容は異なります。
修正後は、意図した計算になっているか確認してください。

AIの修正中は操作しない

AIが数式を修正している間は、Excelを操作しないようにしてください。
例えば、修正中に別のシートへ移動すると、AIが移動先のシートを対象にエラーの確認や修正を行ってしまう場合があります。
意図しないセルが変更される可能性があるため、AIの修正が完了してから操作を再開しましょう。

AIは間違えるときがある

AIが必ずエラーを修正できるとは限りません。
エラーの原因を特定できず、修正しないまま処理を終了する場合もあります。

エラーが解消されても、修正後の数式が意図した計算になっているとは限りません。
AIの修正後、ご自身で数式と計算結果を確認する必要があります。

まとめ

「#VALUE!」エラーは、関数の引数に不適切な値を指定している場合や、文字列を数値として計算している場合などに表示されます。

XLOOKUP関数やSUMPRODUCT関数では範囲の行数・列数、SEARCH関数やFIND関数では検索する文字、VLOOKUP関数や文字列操作関数では引数の指定を確認してください。

IFERROR関数を使うとエラーの代わりに別の文字や数値を表示できますが、まずは数式や引数を見直して、エラーの原因を修正することが大切です。

エラーの原因が分からない場合は、[数式の検証]機能を使うと、計算過程を順番に確認できます。

利用できる環境ではAIによる修正も可能ですが、修正結果が正しいかどうかは自分で確認することが重要です。

参考資料

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

これまで約20年間Excelを使用し、IT関連の業務や不動産業界での事務業務において、資料作成やデータ集計、業務の効率化などに取り組んできました。また、VBAによる作業の自動化や、社内の社員向けにVBAを指導した経験もあります。

当サイトでは、これまでの実務経験をもとに、Excelの基本操作や便利な機能、よくあるエラーやトラブルの対処法を初心者にも分かりやすく解説しています。

記事は実際のExcelで操作を確認し、画像を使って手順を説明しています。公開後も内容を見直し、必要に応じて修正しています。

Excelで困ったときに、問題解決の手助けとなるサイトを目指しています。

目次