Googleスプレッドシートで数式を入力したら、セルに見慣れない文字列が表示された経験はありませんか。#ERROR! や #REF! のように、先頭に # が付いた表示です。
エラーの意味がわからないまま放置すると、集計結果がずれることがあります。共有相手に見せる資料の数字が崩れるなど、思わぬトラブルにもつながります。
この記事では、Googleスプレッドシートで表示されるエラー値9種類の原因と対処法を一覧で解説します。各エラーにはNG例・OK例の数式を載せているので、いま画面に出ているエラーをすぐに解決できます。Excelから移行した方が戸惑いやすい「Sheetsにしかないエラー」も専用セクションで取り上げます。
スプレッドシートのエラー値とは?エラーが表示される仕組み
エラー値とは、数式が正しく計算できないときにGoogleスプレッドシートがセルに返す特殊な文字列のことです。先頭に # が付いているのが特徴です。「この数式には問題がありますよ」とスプレッドシートが教えてくれているサインだと考えてください。
エラーが出る原因は、おもに次の3パターンに分かれます。
- 引数の型や値が不正 — 数値が必要な場所に文字列を渡した場合など
- 参照先が存在しない — セルや行・列が削除された、検索値が見つからない場合など
- 数式の書き方自体に問題がある — 関数名のスペルミス、構文の組み立てミスなど
Googleスプレッドシートのエラー値は全部で9種類あります。そのうち8種はExcelとも共通する一般的なエラーです。残る1種の #ERROR! は、Googleスプレッドシートにしかない独自のエラーです。
まずは全体像を早見表で確認しましょう。
【早見表】スプレッドシートのエラー値9種類の一覧
下の表は、Googleスプレッドシートのエラー値9種類をまとめたものです。「番号」の列は、後述するERROR.TYPE関数が返すエラー種別の数値です。
| エラー値 | 読み方 | 原因の要約 | 番号 | 発生しやすい関数・操作 |
|---|---|---|---|---|
#ERROR! | エラー | 数式の構文・評価が不正 | — | QUERY、ARRAYFORMULA、IMPORTRANGE |
#DIV/0! | ディバイド・パー・ゼロ | ゼロまたは空白セルで除算 | 2 | 四則演算(/)、DIVIDE、AVERAGE |
#VALUE! | バリュー | 引数の型が不一致 | 3 | 四則演算(文字列混在)、SUMIF、DATE |
#REF! | リファレンス | 参照先が存在しない/権限不足 | 4 | 行・列削除後の数式、IMPORTRANGE、VLOOKUP |
#NAME? | ネーム | 関数名や名前の定義が不正 | 5 | 関数名スペルミス、未定義の名前参照 |
#N/A | エヌエー | 検索値が見つからない | 7 | VLOOKUP、HLOOKUP、XLOOKUP、MATCH |
#NUM! | ナンバー | 数値が範囲外 | 6 | SQRT(負の数)、LOG(0以下)、MROUND |
#NULL! | ヌル | 範囲指定の交差演算が不正 | 1 | セル範囲の区切りミス |
#GETTING_DATA | ゲッティングデータ | 外部データを取得中 | 8 | IMPORTRANGE、GOOGLEFINANCE |
この表をブックマークしておくと、エラーが出たときにすぐ原因を絞り込めます。ここからは、発生頻度の高いものから順に各エラーの詳細を見ていきましょう。
よく出るエラー値の原因と対処法
まずは実務で遭遇する頻度が高い5種類です。多くのトラブルはこの5つのどれかに当てはまります。
#DIV/0!(ディバイド・パー・ゼロ)
#DIV/0! は、割り算の分母がゼロまたは空白セルになっているときに表示されるエラーです。スプレッドシートに限らず、数学の世界でも「0で割る」ことは定義されていません。
直接ゼロで割っているケースだけでなく、参照先のセルがまだ未入力のときにも発生します。
=A1/B1
→ B1が空白またはゼロのとき #DIV/0!
=DIVIDE(A1, B1)
→ DIVIDE関数でも分母が0なら #DIV/0!
対処法は、分母がゼロかどうかをIF関数で事前にチェックする方法が定番です。
=IF(B1=0, "", A1/B1)
→ 分母が0なら空白、それ以外なら割り算の結果を表示
=IFERROR(A1/B1, "")
→ エラーなら空白、それ以外なら結果を表示
データがまだ入力途中のシートでは、あらかじめIFERROR関数を仕込んでおくとエラー表示を防げます。
#N/A(エヌエー)
#N/A は、検索関数で検索値が見つからなかったときに表示されるエラーです。VLOOKUP関数やXLOOKUP、MATCH関数でもっとも頻繁に発生します。
=VLOOKUP("Z999", A1:B100, 2, FALSE)
→ Z999が表に存在しないと #N/A
=VLOOKUP(A1, D1:E100, 2, FALSE)
→ A1が「東京 」(末尾スペース)だと見つからず #N/A
データのインポート時に末尾スペースが紛れ込むケースは非常に多いです。見た目では判別できないため、TRIM関数で前後のスペースを除去してから検索するのがおすすめです。
=VLOOKUP(TRIM(A1), D1:E100, 2, FALSE)
→ 検索値の前後スペースを除去してから検索
=IFNA(VLOOKUP(A1, D1:E100, 2, FALSE), "該当なし")
→ #N/Aのときだけ「該当なし」を表示
#N/A の処理には、IFERROR関数よりもIFNA関数を使うのがベターです。IFNAなら #N/A 以外のエラー(数式のバグ)はそのまま表示されます。そのため、問題を見逃しにくくなります。
#VALUE!(バリュー)
#VALUE! は、関数や数式の引数に想定外の型が渡されたときに表示されます。数値が必要な場所に文字列を入れた場合などが典型です。原因の幅が広いため、特定が難しいエラーの一つです。
=A1+B1
→ A1に「abc」など文字列が入っていると #VALUE!
=DATE(2024, "十二", 1)
→ 月に漢数字を指定すると #VALUE!
見落としがちなのが、セルに全角スペースが入っているケースです。見た目は空白なのに、スプレッドシートは「文字列が入っている」と判定します。そのため計算に使おうとすると #VALUE! になります。
対処法は、以下の3点を順番に確認してみてください。
- 数値を指定する引数に文字列を渡していないか
- 参照先のセルにスペース(全角・半角)が混入していないか
- 参照先のセルが別のエラーを返していないか
=A1 + VALUE(B1)
→ VALUE関数で文字列を数値に変換してから計算
原因が見つからないときは、数式を構成するセルを一つずつ確認しましょう。想定外の値が入っていないかチェックするのが確実です。
#REF!(リファレンス)
#REF! は、数式が参照しているセル・行・列が存在しないときに表示されます。もう存在しない場所を見にいっている状態です。
=A1+#REF!
→ 元は =A1+B1 だったが、B列を削除して壊れた
=VLOOKUP(A1, B1:C10, 5, FALSE)
→ 2列しかないのに5列目を指定すると #REF!
行や列を丸ごと削除する操作のあとは特に注意が必要です。数式バーを確認して、引数に #REF! と表示されている箇所があれば、そこを正しいセル参照に書き直します。行や列を削除したあとにFILTER関数やQUERY関数が#REF!などで崩れるケースは行・列削除後にFILTER/QUERYが崩れる原因と修正法で詳しく解説しています。
=VLOOKUP(A1, B1:C10, 2, FALSE)
→ 範囲内の正しい列番号に修正
Googleスプレッドシート特有の原因として、IMPORTRANGE関数の権限承認があります。別のスプレッドシートを初めて参照するとき、最初は #REF! が表示されます。これは「アクセス許可がまだ」というサインに過ぎません。エラーセルにマウスを乗せると「アクセスを許可」ボタンが現れます。これをクリックすると接続が確立され、データが流れ込みます。
=IMPORTRANGE("スプレッドシートのURL", "シート1!A1:C10")
→ 初回は #REF! → 「アクセスを許可」をクリックで解決
参照元のスプレッドシートが削除されたり、URLが変わったりすると、IMPORTRANGEは恒久的に #REF! のままになります。その場合はURLを最新のものに修正してください。
#NAME?(ネーム)
#NAME? は、スプレッドシートが数式の中に「知らない名前」を見つけたときに返すエラーです。関数名のスペルミスが原因であることが大半です。
=VLOKUP(A1, B1:C10, 2, FALSE)
→ VLOOKUPのスペルミスで #NAME?
=IF(A1=完了, "OK", "NG")
→ 「完了」が名前として解釈されて #NAME?
次のポイントを確認すると、ほとんどのケースで解決します。
- 関数名のスペルが正しいか(入力途中に表示される候補リストを活用する)
- 文字列がダブルクォーテーション(
")で囲まれているか - 名前付き範囲を使っている場合、その名前が登録されているか
=VLOOKUP(A1, B1:C10, 2, FALSE)
=IF(A1="完了", "OK", "NG")
→ 正しいスペルと引用符に修正
Excelで作った数式をスプレッドシートに貼り付けたときも #NAME? が出ることがあります。GoogleスプレッドシートにないExcel専用関数を使っている場合などが該当します。
たまに出るエラー値の原因と対処法
ここからは、発生頻度はやや低いものの、原因を知らないと戸惑いやすい3種類です。
#NUM!(ナンバー)
#NUM! は、数式の計算結果がスプレッドシートで扱える数値の範囲を超えたとき、または関数が解を見つけられなかったときに表示されます。
=SQRT(-4)
→ 負の数の平方根は実数の範囲で計算不可なので #NUM!
=LOG(0)
→ 対数は正の数のみなので #NUM!
引数に渡している値が、その関数の許容範囲内かどうかを確認します。
=SQRT(ABS(A1))
→ ABS関数で絶対値にしてから平方根を計算
=IF(A1>0, LOG(A1), "計算不可")
→ 正の数のときだけ対数を計算
MROUND関数のように、引数の符号が一致しないと #NUM! になる関数もあります。値と倍数を同じ符号でそろえると解決します。
#NULL!(ヌル)
#NULL! は、セル範囲の指定で区切り文字を誤ったときに表示されるエラーです。9種類の中では発生頻度が低いものの、原因を知らないと「なぜ出たのか」がわかりにくいタイプです。
スプレッドシートの数式では、半角スペースは「2つの範囲の共通部分(交差部分)を返す」という意味を持ちます。2つの範囲に共通部分がないと #NULL! になります。
=SUM(A1:A5 B1:B5)
→ カンマの代わりにスペースで区切り、共通部分がないので #NULL!
ほとんどの場合、カンマ(,)またはコロン(:)の入力忘れが原因です。
=SUM(A1:A5, B1:B5)
→ カンマで複数範囲を指定
=SUM(A1:A5)
→ コロンで連続範囲を指定
このエラーは、Excelで作った数式をスプレッドシートに貼り付けたときに見かけることが多いです。
#GETTING_DATA(ゲッティングデータ)
#GETTING_DATA は、外部ソースからデータを取得中であることを示す一時的な表示です。スプレッドシートでは「Loading…」と表示されることもあります。厳密にはエラーではなく、データの読み込みが完了すれば自動的に消えます。
IMPORTRANGEやGOOGLEFINANCEなどの外部データ関数を使ったときに表示されます。基本的には待つだけで解消されます。
数分経っても消えない場合は、外部データ関数を使いすぎている可能性があります。以下を試してみてください。
- ネットワーク接続を確認する
- シート内のIMPORTRANGE関数の数を減らす
- 取得するデータの範囲を必要最小限にしぼる
スプレッドシート特有の「#ERROR!」の原因と対処法
#ERROR! は、Googleスプレッドシートにしかない独自のエラーです。Excelには存在しないため、Excelから移行した方が「見たことのないエラーが出た」と戸惑いやすいのが特徴です。
#ERROR! は、数式の解析(パース)は通ったものの、評価の段階で計算できないときに表示されます。おもな原因は次のとおりです。
- 数式の構文が不正(カッコの過不足、引数の組み立てミス)
- 配列のサイズが揃わない(ARRAYFORMULA関数で行数・列数が一致しない)
- QUERY関数のクエリ文字列の書き方が間違っている
- IMPORTRANGEで揮発性関数(NOW・RANDなど)を含むセルを参照した
具体的な発生パターンを見てみましょう。
=QUERY(A1:C10, "SELET A, B")
→ SELECTのスペルミスでクエリ構文エラーになり #ERROR!
=ARRAYFORMULA(A1:A5 * B1:B3)
→ 5行と3行で配列サイズが揃わず #ERROR!
対処法は、エラーの原因ごとに変わります。
=QUERY(A1:C10, "SELECT A, B")
→ クエリ文字列のスペル・構文を正しく修正
=ARRAYFORMULA(A1:A5 * B1:B5)
→ 配列のサイズ(行数・列数)をそろえる
QUERY関数の #ERROR! は、クエリ文字列の構文ミスがほとんどです。列の指定(SELECT)、条件(WHERE)、並べ替え(ORDER BY)の各キーワードのスペルと順序を確認してください。
IMPORTRANGEで #ERROR! が出る場合は、参照元のセルに NOW や RAND などの揮発性関数が含まれていないかチェックします。揮発性関数のセルは参照しない設計に変更すると解決します。
エラーセルにマウスを乗せると、原因の手がかりとなるメッセージが表示されることがあります。まずはそのメッセージを確認すると、修正箇所を絞り込みやすくなります。
ExcelとGoogleスプレッドシートのエラー値の違い
ExcelからGoogleスプレッドシートに移行すると、「Excelで見慣れたエラーが出ない」「逆に見たことのないエラーが出る」という戸惑いが生まれます。両者のエラー値の違いを整理しておきましょう。
| エラー値 | Excel | スプレッドシート | 備考 |
|---|---|---|---|
#DIV/0! | あり | あり | 共通 |
#VALUE! | あり | あり | 共通 |
#REF! | あり | あり | Sheetsはimportrange権限でも発生 |
#NAME? | あり | あり | 共通 |
#N/A | あり | あり | 共通 |
#NUM! | あり | あり | 共通 |
#NULL! | あり | あり | 共通(Sheetsはまれ) |
#ERROR! | なし | あり | Sheets固有の構文・評価エラー |
#GETTING_DATA | あり | あり(Loading…表記) | 外部データ取得中 |
#### | あり | なし | Sheetsは列幅不足でも表示されない |
#SPILL! | あり(365) | なし | Sheetsはスピルの概念が異なる |
#CALC! | あり(365) | なし | Sheets固有の同等エラーなし |
ポイントを整理すると、次のようになります。
- スプレッドシートにあってExcelにないエラー:
#ERROR!(構文・評価エラー) - Excelにあってスプレッドシートにないエラー:
####・#SPILL!・#CALC!
たとえばExcelで列幅が足りないときに出る #### は、スプレッドシートには存在しません。スプレッドシートは列幅が足りなくても数値を縮めて表示するためです。逆に、スプレッドシートでQUERYやARRAYFORMULAを使うと出る #ERROR! は、Excelには存在しないエラーです。
両ツールを行き来する方は、Excelのエラー値一覧もあわせて確認しておくと、移行時の混乱を防げます。ExcelとSheetsの違い全般については、ExcelとGoogleスプレッドシートの違いで詳しく解説しています。
エラー表示を消す・処理する関数の使い分け
エラーの原因を直すのが最善です。とはいえ「データ未入力の段階ではエラーが出るのは仕方ない」というケースもあります。そんなときは、エラー処理関数を使ってエラー表示を制御しましょう。
以下がエラー処理関数の使い分け早見表です。
| 関数 | 処理するエラー | 使いどころ |
|---|---|---|
| IFERROR | すべてのエラー | エラーを空白や代替値に置き換えたいとき |
| IFNA | #N/A のみ | 検索関数の「見つからない」だけを処理したいとき |
| ISERROR | すべてのエラー(TRUE/FALSE) | IF関数や条件付き書式と組み合わせたいとき |
| ERROR.TYPE | エラー番号を取得 | エラーの種類ごとに処理を分けたいとき |
IFERROR — すべてのエラーを一括処理
IFERROR関数は、数式がエラーを返した場合に代替の値を表示する関数です。もっとも手軽で、実務で使用頻度が高い関数です。
=IFERROR(値, エラーの場合の値)
=IFERROR(A1/B1, "")
→ 割り算のエラーを空白に置き換える
=IFERROR(VLOOKUP(A1, D:E, 2, FALSE), "未登録")
→ 検索のエラーに代替テキストを表示する
便利な関数ですが、すべてのエラーを一括でキャッチしてしまう点には注意が必要です。数式にバグがあっても気づけなくなるリスクがあります。そのため「なぜエラーが出るのか」を理解したうえで使いましょう。
IFNA — #N/Aだけを処理
IFNA関数は、#N/A エラーだけをキャッチする関数です。検索関数とセットで使うのに最適です。
=IFNA(値, #N/Aの場合の値)
=IFNA(VLOOKUP(A1, D:E, 2, FALSE), "該当なし")
→ 検索の「見つからない」だけを処理する
IFERRORとの違いは、#N/A 以外のエラー(#REF! や #VALUE! など)はそのまま表示される点です。つまり、数式のバグに気づきやすくなります。検索関数の「見つからない」を処理したいだけなら、IFERRORよりもIFNAを選ぶのがおすすめです。
ISERROR / ERROR.TYPE — 条件分岐とエラー集計
ISERROR関数は、セルがエラーかどうかをTRUE/FALSEで返す関数です。単体では使わず、IF関数や条件付き書式と組み合わせて使います。
=IF(ISERROR(A1/B1), "エラー", A1/B1)
→ エラーなら「エラー」、それ以外なら結果を表示
条件付き書式でエラーセルを色分けしたいときも、ISERROR関数が役立ちます。ルールの数式欄に =ISERROR(A1) と入力すると、エラーのセルだけを塗りつぶせます。
エラーの種類ごとに処理を分けたいときは、ERROR.TYPE関数が便利です。エラーを番号で返すので、SWITCH関数と組み合わせてエラーごとに異なるメッセージを表示できます。
まとめ
Googleスプレッドシートのエラー値9種類の原因と対処法を一覧で解説しました。最後にポイントを整理します。
- 共通の8種(
#DIV/0!・#VALUE!・#REF!・#NAME?・#N/A・#NUM!・#NULL!・#GETTING_DATA)はExcelとも共通。原因のほとんどは「引数の型ミス」「参照先の消失」「スペルミス」のいずれか #ERROR!はスプレッドシート固有。QUERY・ARRAYFORMULA・IMPORTRANGEの構文や設定を見直す#REF!はIMPORTRANGEの権限承認でも発生する。「アクセスを許可」をクリックで解決- エラー処理にはIFNA > IFERRORの優先順位で検討する。IFNAなら数式バグを見逃しにくい
- 条件付き書式でエラーを判定するにはISERROR関数を使う
エラーの種類と原因を押さえておくと、トラブルが発生しても慌てず対処できます。この一覧表をブックマークしておいて、困ったときにすぐ確認してみてください。
やりたいことから関数を探したいときは、Googleスプレッドシート関数一覧【機能別】もあわせてご活用ください。
