スプレッドシートのエラー一覧|原因と直し方を種類別に解説

執筆者:

カテゴリ:

数式にエラーが出たとき、エラーの種類が原因をほぼ特定してくれます。

このページでは7種類のエラーについて、原因と直し方を順に整理します。まず出ているエラーの種類を確認してから、該当する項目を読んでください。

エラー種別の早見表

エラー 一言で言うと 主な原因
#N/A 見つからなかった 検索キーが存在しない
#REF! 参照が壊れた 行列の削除、範囲外の指定
#VALUE! 型が違う 数値のところに文字列
#DIV/0! 0で割った 分母が空欄か0
#NAME? 名前が分からない 関数名の綴り違い
#NUM! 数値がおかしい 計算範囲外、引数の矛盾
#ERROR! 数式の書き方が不正 括弧やカンマの誤り

#N/A ── 見つからなかった

VLOOKUPMATCH などの検索系で出ます。「探したけれど無かった」という意味で、数式自体は正しく動いています。

原因1:本当に存在しない

マスタに登録されていないデータです。これは数式の問題ではなくデータの問題なので、エラーを消すのではなくマスタを直してください。

原因2:余分なスペース

"B-201 ""B-201" は別物です。見た目では分かりません。

=LEN(A2)

で文字数を確認すると判別できます。TRIM で整えてください。

=VLOOKUP(TRIM(A2), マスタ!A:B, 2, FALSE)

原因3:数値と文字列の食い違い

101(数値)と "101"(文字列)は一致しません。セルが左寄せなら文字列です。

原因4:全角と半角

"ABC""ABC" は別物です。ASC で半角に統一できます。

原因5:検索範囲が左端にない

VLOOKUP範囲の左端列しか検索しません。 右から左へは探せません。XLOOKUPINDEX+MATCH を使ってください。

対処

原因を特定したうえで、見つからないことが正常なら包みます。

=IFNA(VLOOKUP(A2, マスタ!A:B, 2, FALSE), "未登録")

IFERROR より IFNA を推奨します。 IFERRORは #REF!#NAME? まで隠してしまい、本当の不具合に気づけなくなります。

#REF! ── 参照が壊れた

最も危険なエラーです。 参照先が失われています。

原因1:参照していた行や列を削除した

数式が指していたセルが消えました。元に戻すには、削除を取り消すしかありません。 定期的にバージョン履歴を確認する習慣が効きます。

原因2:列番号が範囲を超えている

=VLOOKUP(A2, A:C, 4, FALSE)

範囲が3列なのに4列目を指定しています。

原因3:結果の展開先にデータがある

FILTER SORT UNIQUE SPLIT ARRAYFORMULA など、複数セルに結果を返す関数で頻出します。

数式の下や右に何か入力されていないか確認してください。これが分かれば一瞬で直せます。

原因4:IMPORTRANGEのアクセス未許可

IMPORTRANGE を入れた直後は #REF! になります。セルにカーソルを合わせて「アクセスを許可」を押してください。

原因5:循環参照

自分自身を参照しています。=SUM(A:A) をA列に書いた場合などです。列全体を指定するときは、数式を別の列に置いてください。

#VALUE! ── 型が違う

数値を期待している場所に文字列が入っています。

原因1:数値が文字列になっている

CSVや他システムからのコピーで頻出します。セルが左寄せなら文字列です。

=COUNT(A2:A100)

COUNT が行数より少なければ、文字列が混ざっています。

原因2:範囲の大きさが揃っていない

FILTERSUMIFS で、条件範囲と対象範囲の行数が違うと出ます。すべて同じ行数に揃えるか、列全体で統一してください。

原因3:日付が文字列になっている

DATEVALUE で変換してください。

原因4:引数の型が間違っている

MID の開始位置に0以下、OFFSET の高さに0以下を指定した場合など。

#DIV/0! ── 0で割った

分母が0か空欄です。

対処

計算できないことが正常なら包みます。

=IFERROR(A2/B2, "")

0 ではなく "" を返してください。 0を返すと、後で AVERAGE を取ったときに平均が下がります。

AVERAGEIF で出る場合は、条件に合う行が1件もないという意味です。条件のスペースや全角半角を確認してください。

#NAME? ── 名前が分からない

原因1:関数名の綴り違い

VLOOKUPVLOOKUPP と書いた、など。

原因2:その環境に無い関数

Excel 2019以前で XLOOKUPFILTER を使った場合。

逆に、QUERY SPLIT FLATTEN ARRAYFORMULA REGEXEXTRACTスプレッドシート専用で、Excelでは動きません。

原因3:文字列をクォートで囲んでいない

=VLOOKUP(東京, A:B, 2, FALSE)     ← 誤り
=VLOOKUP("東京", A:B, 2, FALSE)   ← 正しい

原因4:名前付き範囲が存在しない

範囲名の綴りを確認してください。

#NUM! ── 数値がおかしい

原因1:引数の順番が逆

DATEDIF で開始日が終了日より後になっている、など。

原因2:計算結果が扱える範囲を超えた

極端に大きい数、負の数の平方根など。

原因3:日付の範囲外

EOMONTH に極端な月数を渡した場合など。

#ERROR! ── 数式の書き方が不正

スプレッドシート特有のエラーです。Excelでは入力時に弾かれるものが、ここでは #ERROR! になります。

原因1:括弧の数が合っていない

長い数式でよく起きます。数式バーで括弧の対応が色分けされるので確認してください。

原因2:カンマの数が合っていない

IFS で条件と値がペアになっていない、など。

原因3:クォートで囲むべき引数を囲んでいない

IMPORTRANGE の第2引数、QUERY のクエリ文で頻出します。

=IMPORTRANGE("キー", 売上!A1:D100)     ← 誤り
=IMPORTRANGE("キー", "売上!A1:D100")   ← 正しい

エラーを消す前に確認すること

IFERRORで全部包む前に、必ず一度は原因を確認してください。

IFERROR はすべての種類のエラーを区別なく置き換えます。「見つからなかっただけの #N/A」も「参照が壊れた #REF!」も、同じ値に化けます。

結果として、本当は取得できるはずのデータが黙って消えている状態になります。数字は出るのに間違っている、という最も気づきにくい不具合です。

手順:

  1. 1. まずIFERROR無しで数式を書く
  2. 2. 出たエラーの種類を確認する
  3. 3. 原因を特定して潰す
  4. 4. 想定内のエラーだけを包む

包むときも、可能なら範囲を絞ってください。

  • #N/A だけなら IFNA
  • – 検索なら XLOOKUP の第4引数

エラーの件数を監視する

エラーを隠す代わりに、件数を数えて見えるようにするという方法もあります。

=COUNTIF(C2:C1000, "#N/A")

マスタ未登録の件数が分かるので、データの不備に気づけます。隠すより数えるほうが運用しやすい場面は多くあります。

まとめ

  • エラーの種類が原因をほぼ特定する。まず種類を確認する
  • #N/A は「見つからない」。スペース・型・全角半角を疑う
  • #REF! は最も危険。複数セルを返す関数では展開先を確認
  • #VALUE! は型違いか、範囲の行数のずれ
  • #ERROR! はスプレッドシート特有。括弧・カンマ・クォートを確認
  • 原因を特定する前にIFERRORで包まない

関連ページ

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です