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

執筆者:

カテゴリ:

スプレッドシートのエラー一覧のイメージ

目的別

スプレッドシートのエラー一覧

Excel関数辞典

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

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

スプレッドシートのエラー一覧の記事構成図
スプレッドシートのエラー一覧:この記事で扱う内容

よく出る3つは、それぞれ専用の解説を用意しています。原因も直し方も別物なので、種類が分かっているならそちらが早いです。

このページの中身(23項目)
  1. エラー種別の早見表
  2. #N/A ── 見つからなかった
  3. #REF! ── 参照が壊れた
  4. #VALUE! ── 型が違う
  5. #DIV/0! ── 0で割った
  6. #NAME? ── 名前が分からない
  7. #NUM! ── 数値がおかしい
  8. #ERROR! ── 数式の書き方が不正
  9. エラーを消す前に確認すること
  10. エラーの件数を監視する
  11. エラーは故障ではなく報告である
  12. 種類ごとの読み方
  13. 見えない文字が原因のとき
  14. エラーを一括で見つける
  15. 「目的別」の関数を全体から見る
  16. 数式を書く前の手順
  17. どの関数でも共通する確認
  18. 引き継ぐときに残すこと
  19. このサイトの収録状況
  20. よくある質問
  21. この分野の他の記事
  22. まとめ
  23. 関連ページ

エラー種別の早見表

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

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

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

原因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 は範囲の左端列しか検索しません。 右から左へは探せません。XLOOKUP か INDEX+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:範囲の大きさが揃っていない

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

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

DATEVALUE で変換してください。

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

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

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

分母が0か空欄です。

対処

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

=IFERROR(A2/B2, "")

0 ではなく "" を返してください

0を返すと、後で AVERAGE を取ったときに平均が下がります。

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

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

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

VLOOKUP を VLOOKUPP と書いた、など。

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

Excel 2019以前で XLOOKUP や FILTER を使った場合。

逆に、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. まずIFERROR無しで数式を書く
  2. 出たエラーの種類を確認する
  3. 原因を特定して潰す
  4. 想定内のエラーだけを包む

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

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

エラーの件数を監視する

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

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

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


エラーは故障ではなく報告である

表計算のエラー表示を「壊れた」と受け取る人は多いのですが、実際には逆です。エラーは、指示どおりに処理しようとしたができなかった、という報告です。何ができなかったのかを種類で伝えてくれているので、種類さえ読めれば原因はかなり絞れます。

厄介なのは、エラーを消す方法だけが広く知られていることです。エラーを別の値に置き換える関数を使えば、表示は消えます。しかし原因は残ったままです。検索が見つかっていない、参照先が消えている、割る数がゼロになっている。こうした状態が続いたまま、表面上は正常に見える表ができあがります。

実際の事故はこう起こります。マスタから値を引く数式にエラー回避を仕込んでおり、見つからないときは空欄が出るようにしていた。ある日マスタの構造が変わって参照がずれたが、空欄になるだけなので誰も気づかない。数か月後に集計が合わないことが発覚したとき、いつから間違っていたのか追えなくなっている。

したがって、エラーを見つけたときの正しい順番はこうです。まず種類を読む。次に原因を特定する。原因を直す。正しく動くことを確認する。そのうえで、業務上どうしても表示させたくないものだけを隠す。この順番を守るだけで、ファイルの信頼性はまったく変わります。


種類ごとの読み方

該当なしを意味するエラーは、検索系の関数が返します。探したが見つからなかった、という報告です。数式そのものは正常に動いています。原因は、検索値と検索範囲の型が違う、前後に空白が入っている、範囲がずれている、のいずれかがほとんどです。

参照が無効というエラーは、参照先が存在しないときに出ます。行や列を削除した、範囲の外を指定した、シートを消した。構造が壊れているので、必ず原因を直してください。これを隠すのは危険です。

値が不適切というエラーは、型が合わないときに出ます。文字列を数値として計算しようとした、日付として解釈できない文字列を渡した、といった場合です。元データの型を確認してください。

名前が不明というエラーは、関数名の綴り違いか、定義していない名前を参照しています。単純なミスなので、綴りを確認すれば解決します。

ゼロで割ったというエラーは、分母がゼロか空欄です。入力待ちであれば想定内なので、先に空欄かどうかを判定する形に書き換えるのが適切です。

数値が不正というエラーは、計算結果が扱える範囲を超えたときに出ます。負の数の平方根を求めようとした、といった場合です。

範囲が重なっていないというエラーは、範囲の指定方法に誤りがあります。

これらを見分けられるだけで、対処の当たりがつくようになります。


見えない文字が原因のとき

エラーの原因として頻度が高い割に、もっとも気づきにくいのが、見えない文字の混入です。

前後の半角スペースは、人の目にはまったく分かりません。「東京」と「東京 」は別の値ですが、画面上では同じに見えます。他のシステムから出力したデータ、メールから貼り付けた文字列、フォームの回答。こうした経路で入ってきたデータには高い確率で混ざっています。

改行の混入も同様です。セルの中に改行が入っていると、比較も検索も一致しなくなります。セルの高さが不自然に高い場合は疑ってください。

全角と半角の違いも見分けにくい原因です。数字やアルファベットが全角で入っていると、半角の値とは一致しません。

対処としては、取り込んだ直後に整形する作業列を用意するのが確実です。前後の空白を落とす、改行を除く、全角を半角に揃える。この三つを通した列を作り、以降はそちらを参照するようにします。数式の中で毎回処理するより、保守がはるかに楽になります。

原因の切り分けには、文字数を数える方法が有効です。想定より多ければ、余計な文字が入っています。


エラーを一括で見つける

シートが大きくなると、どこにエラーがあるのか探すだけで時間がかかります。効率的な方法がいくつかあります。

エラーの件数を数える数式を、シートの端に置いておく方法があります。件数が変わったときだけ調べればよくなるので、日常的な監視が楽になります。

条件付き書式でエラーのセルに色を付ける方法もあります。目立たせておけば、シートを見た瞬間に分かります。エラーを隠すのではなく目立たせる、という発想です。

ジャンプ機能を使って、数式を含むセルやエラーを含むセルだけを選択することもできます。シート全体を目で追う必要がなくなります。

大きなファイルを引き継いだときは、まずこの三つでエラーの分布を把握してから中身を読むと、構造の理解が早くなります。


「目的別」の関数を全体から見る

やりたいことから関数を選ぶための記事です。同じカテゴリの関数は、つまずく場所も似ています。この記事のほかに52本あります。

記事
1つの値だけを取り出す
1行おきに処理する
COUNTIFの条件を文字列で組み立てる
SPLITで区切り文字を細かく指定する
VLOOKUPとXLOOKUPの違い
しきい値で色分けする
エラーを扱う
エラー表示を消す
クロス集計表を作る
グループごとに集計する
コードや管理番号を作る
スプレッドシートで重複を削除・抽出す
データの誤りを見つける
プルダウンの選択肢を作る
入力ミスを検出する
別のファイルからデータを取る
別の表から値を引いてくる
別シートからデータを取得する方法まと
前月比・前年比を出す
割合や構成比を出す
印刷や共有のために整える
参照がずれないようにする
文字列と数値を変換する
文字列の一部を取り出す
文字列をつなげる
日付で集計する
日付の表示形式を変える
日付を計算する
時間を計算する
曜日で処理を分ける
月ごとに集計する
期間を指定して集計する
条件で処理を分ける
条件に合う行だけ取り出す
桁や単位を揃える
氏名や住所を分解する
空欄を扱う
累計を出す
縦持ちと横持ちを変換する
表の形を変える
表記ゆれを揃える
複数の条件で検索する
複数の表をまとめる
複数条件で集計する
見た目を整える
連番を振る
部分一致で検索する
重複をチェックする
重複を扱う
集計に使う関数の選び方
集計表を自動更新にする
順位を付ける

このカテゴリで共通するつまずき

関数名から探すより、条件から絞るほうが早く決まります。1つで理解した内容は、同じカテゴリの他の関数にもそのまま使えます。

どれを使うかの決め方

出したい結果を一文で書けば、関数はほぼ1つに決まります。関数の一覧を眺めて選ぼうとすると、どれも当てはまるように見えて決まりません。

迷ったときは

→ 全関数の一覧 に目的別の索引があります。


数式を書く前の手順

先に決めておけば、書くのは数分で終わります。

1. 出したい結果を一文で書く

「何を、どの条件で、どんな形で出したいか」。この一文が書ければ、関数はほぼ決まります。書けないなら、まだ要件が固まっていません。

2. 元データの型を確認する

関数名から探すより、条件から絞るほうが早く決まります。=ISNUMBER(A2) で数値かどうかを確認できます。見た目が同じでも、数値と文字列は別物です。

3. 空欄と0の扱いを決める

未入力なのか、実績が0なのか。表の意味が変わります。どちらとして扱うかを決めてから書いてください。

4. 条件の数を数える

出したい結果を一文で書けば、関数はほぼ1つに決まります。将来条件が増える可能性があるなら、最初から複数条件に対応する形にしてください。

5. 共有先の環境を確認する

新しい関数は、古い環境で開くとエラーになります。社外に渡すファイルでは、この一点で選択肢が変わります。

6. 1行だけ書いて確認する

全行にコピーする前に、1行分の結果が正しいかを見てください。間違ったまま広げると、直す手間が増えます。


どの関数でも共通する確認

うまくいかないときに見る場所は、ほぼ決まっています。

参照を固定したか

下方向にコピーする数式では、動いてはいけない参照を固定します。上の数行だけ見て判断しないでください。ずれは下のほうで表面化します。

範囲の行数が揃っているか

複数の範囲を渡す関数では、行数がずれると結果が狂います。エラーにならず値が返るため、気づきにくい種類の間違いです。

型が揃っているか

=ISNUMBER(A2)

数値として入っているかを判定します。システムから書き出したデータでは、これが原因のことが多くあります。

前後に空白が入っていないか

=LEN(A2)&" / "&LEN(TRIM(A2))

数が違えば、余分な空白が入っています。見た目では判別できません。

別の方法で検算したか

同じ数字を別の関数でも出して、突き合わせてください。1つの結果だけを見ても、正しいかどうかは判断できません。

最終行まで確認したか

一番下までスクロールして、結果を見てください。途中から値が変わっていないかを確認します。


引き継ぐときに残すこと

数式は動いていても、意図は残りません。渡す前に、次の点をシート内にメモしてください。3分で終わります。

何を出している数式か

一行で構いません。読めば分かると思っても、数か月後の自分には分かりません。

どの表を参照しているか

参照先のシート名と、更新の担当。別ファイルなら、その場所も書いてください。

該当しないときの扱い

空欄にしているのか、文言を出しているのか、エラーのまま残しているのか。書いていないと、受け取った側は空欄をデータなしと読みます。

触ってはいけない場所

列を挿入すると壊れる数式がある場合、必ず書き残してください。この一行があるだけで、引き継ぎ後の事故が大きく減ります。

使った関数の対応環境

新しい関数を使っている場合、古い環境では開けません。共有の範囲が広がる可能性があるなら、明記してください。

確定した期間は値にする

締めた月の集計は、値貼り付けにしてください。参照元を消しても壊れなくなり、ファイルも軽くなります。

このサイトの収録状況

収録は201本です。カテゴリごとの内訳を出しておきます。

カテゴリ記事数
目的別51本 ←この記事
集計47本
文字列31本
日付19本
検索・参照15本
条件15本
機能12本
配列・抽出10本
関数一覧1本

探し方の順番

関数名が分かっているなら検索窓から。やりたいことだけ決まっているなら「目的別」から。近い関数を比べたいなら、同じカテゴリの一覧から入ってください。

記事の構成

どの記事も、書式・実例・つまずきやすいところ・似た関数との使い分けを同じ順番で並べています。1本読めば、他の記事も同じ場所を探せます。


よくある質問

Q. エラーを全部消す方法はありますか

エラー回避の関数で包めば表示は消えますが、原因は残ります。原因を確かめてから隠してください。

Q. 印刷のときだけエラーを消せますか

ページ設定で、エラー値の印刷方法を指定できます。数式を変えずに印刷結果だけ空欄にできます。

Q. 該当なしのエラーだけを隠したいのですが

該当なし専用の回避関数があります。他の種類のエラーはそのまま表示されるので、想定外の異常に気づけます。

Q. 循環参照と言われます

数式が自分自身を参照しています。合計欄を範囲に含めていないか確認してください。

Q. 緑の三角が出ますが、エラーではないようです

数式の書き方に対する警告表示です。実害がないことも多いのですが、範囲の指定漏れを教えてくれている場合もあるので、一度は内容を確認してください。

Q. 数式が文字列として表示されます

セルの表示形式が文字列になっているか、先頭にアポストロフィが入っています。表示形式を標準に戻してから入力し直してください。

Q. 他のシートを参照するとエラーになります

シート名に空白や記号が含まれる場合、シングルクォートで囲む必要があります。

Q. 外部ファイルの参照がエラーになります

アクセス権限が必要な場合があります。スプレッドシートでは、最初に一度だけ許可の操作が必要です。



この分野の他の記事

同じ「目的別」の記事です。目的が近いので、こちらで解決しない場合はこちらも見てください。

まとめ

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

関連ページ