「せっかく作った数式に、突然現れた『#VALUE!』や『#REF!』の文字……。何が間違っているのか分からなくて、イライラした経験はありませんか?」
Googleスプレッドシートのエラーメッセージは、一見暗号のようですが、それぞれ「発生した原因」がハッキリと決まっています。 つまり、エラーの名前さえ分かれば、一瞬で原因を突き止めて修正することができるのです。
この記事では、実務で頻出する7大エラーの原因と、具体的な修正手順を分かりやすく解説します。エラーの仕組みを理解して、トラブルをサクッと解決できるスプレッドシートの達人を目指しましょう!
#DIV/0!
原因
表を作成していると、表示されやすいエラーが「#DIV/0!」です。「#DIV/0!」エラーは、数式が0で割ろうとしているときや、空白の状態で割ろうとしている時に表示されるエラーです。実際の例で見てみましょう。

Fにある販売達成率を見てください。販売達成率は簡単な数式「販売数/販売予定数」を計算して「%」で表示させています。
赤い矢印の先にあるセルに、「#DIV/0!」エラーが表示されています。これは、10月12日の販売予定数が「0」になっていることが原因となっています。
修正方法
セル内にエラー表示がされたままでは見栄えもよくありませんし、後で集計したりグラフを作成する時に問題が発生する可能性もありますので、修正する必要があります。
まず最初に根本的な原因を考えると、この日だけ「販売予定数」が「0」になっているのは、単なる入力ミスなのか、または休日だったのか、それともこの日は理由があって売れないと考えていたのかのどれかになると思います。販売予定数に何かしらの数値を入力することが出来れば問題は解決しますが、「0」が正しい場合も考えられます。
そのような場合は、「IFERROR 関数」を使って問題を解決するようにしましょう。

「=IFERROR(E13/D13,”休日”)」と入力すると「#DIV/0!」の代わりに、「休日」と表示されました。
ここでは、エラーの出たセルのみ「IFERROR 関数」を挿入してみましたが、販売達成率が表示されている「F列」すべてに「IFERROR 関数」を指定しても問題ありません。「IFERROR 関数」は、最初の計算式でエラーが出なければ、計算結果を返し、エラーがあれば「””」で囲まれた引数を返します。
実務でよく使われるが、「エラーのときは何も表示させず、見た目をスッキリさせるために空欄にする」方法です。この場合の数式は簡単で「=IFERROR(E13/D13,””)」と入力すればOKです。
「IFERROR 関数」の詳しい使い方は以下の記事をご参照ください。
#ERROR!
原因
「#ERROR!」は、区切り文字である「,(カンマ)」を挿入し忘れた時に発生するエラーです。使用頻度の多い、SUM関数やCOUNT関数で表示されることが多いエラーです。実際の例を見てみます。

左側の表に、10月のジャケットとシャツの販売数が入力されています。これらの合計販売数を赤い枠線の中のセルに、SUM関数を使って計算します。
「=SUM(D28:D37 E28:E37)」と一見正しそうな数式を入力していますが、「#ERROR!」が表示されています。もちろんここでの原因は、「,(カンマ)」の入力忘れです。
またよくある原因として挙げられるのが、「数式やカッコ、スペースが全角になってしまっている」場合です。「#ERROR!」が表示されたら、こちらの原因も考えてみてください。
修正方法

修正方法は簡単です。「=SUM(D28:D37, E28:E37)」と「D28:D37」と「E28:E37」の間に「,(カンマ)」を入力すれば、正しい計算結果が返されます。
#N/A
原因
「#N/A」エラーは、計算式のデータがシート上で見つからない場合に表示されるエラーです。言葉では少し分かりにくいので、例を見ていきましょう。

表では、ジャケットとシャツの販売額を集計しています。集計には「VLOOKUP関数」を使用しています。数式は、「=VLOOKUP(G33,G28:H29,2,0)」となっています。
ジャケットの販売金額は「140000」と正しく表示されていますが、ジャンバーの販売額のところに「#N/A」エラーが表示されています。原因はすでにお気づきだと思いますが、「ジャンバー」自体が存在していないことによるものです。
「VLOOKUP関数」についてよく分からない方は以下の記事をご参照ください。
修正方法

修正方法は簡単です。「G33」のジャンバーをシャツに変更して、シャツの合計販売枚数である、「E39」を掛ければ正しい計算結果、「81000」が表示されます。
「=VLOOKUP(G33,G28:H29,2,0)*E39」
VLOOKUPでデータが見つからないと 「#N/A」になりますが、現在広く使われている XLOOKUP関数 を使えば、「見つからない場合の返り値」を数式内で最初から指定できるため、このエラー自体を防ぐことが出来ます。
#NAME?
原因
「#NAME?」エラーは名前のとおり、数式の名前が間違っている時に表示されます。実際の例を見てみましょう。

表では先程と同じようにシャツの販売金額を集計しています。セルには「VLOOKUP関数」を使って、「=VLOOOKUP(G34,G28:H29,2,0)*E39」と入力しています。一見正しそうな数式ですが、どこかが間違っています。
「#NAME?」エラーは数式の名前が間違っている時に表示されるエラーですから、数式名に間違いがあります。「VLOOKUP」と入力すべきところが、「VLOOOKUP」と「O」が一つ余計に入力されています。修正はここを直せば良いということがすぐに分かると思います。
修正方法

正しい数式「=VLOOKUP(G34,G28:H29,2,0)*E39」と入力すれば、販売金額の「81000」が返されます。「#NAME?」エラーはエラーの原因が見つけやすいので、表示されたときは速やかに訂正するようにしましょう。
#NUM!
原因
「#NUM!」エラーは、指定通りに計算式が実行出来ない時に表示されるエラーです。実際の例を見てみましょう。

表では納品予定日と実際の納品日から遅延日数を計算しています。関数は「DATEDIF関数」を使用しています。数式は、「=DATEDIF(L7,M7,”D”)」と入力しています。数式は正しいセルを選択して、正しい単位(D)を入力しているので間違いはありません。では一体どこに間違いがあるのでしょうか?
「#NUM!」エラーは計算式が実行出来ない時に表示されるエラーです。ここでは、「L7」から「M7」の日数が計算できないためにエラー表示となっています。つまり、「DATEDIF関数」はパラメータ2が(ここではM7)がパラメータ1(ここではL7)より同日かその後の日付でないと計算することが出来ないために、エラーが表示されているのです。(納品日が9ヶ月も前なのはおかしいですよね)
修正方法

ここでは数式を訂正するのではなく、「M7」のセルの日付を訂正しました。「2022/01/01」と入力されていたものを、「2022/10/01」に変更しています。これで正しい遅延日数、「1」が結果として返されるようになりました。
#VALUE!
原因
「#VALUE!」エラーは、数式やセルに問題があるときに表示されるエラーです。何が問題であるかが分かりにくいエラーですので、「#VALUE!」エラーが表示されたらしっかりと原因を突き詰めるように注意しましょう。

先ほどと同じ表で、遅延日数を計算します。計算式は、「=DATEDIF(L2,M2,”D”)」と入力しています。計算式に問題はないようです。
指定したセルの中身を見ていきましょう。日付も納品日が予定日より後になっていますので、計算が出来ないということはありません。でもここで少しおかしなことに気が付かれると思います。
納品日の日付が、「202210月01日」と漢字を使って入力しています。パラメータの値は数値にする必要があるので、エラーが表示される原因はここにあるということが分かると思います。
修正方法

「M2」の日付を「2022/10/01」と数値に入力し直して計算を実行しました。遅延日数は正しい計算結果「9」が返されました。
#REF!
原因
「#REF!」エラーは、参照していたセルが削除されて、計算が出来なくなったときに表示されます。

表では、「B45」から「B51」までのセルを一つ一つ足した結果が「B52」に表示されています。ここでは、「17」が計算結果となっています。ここで、「51行目」を削除してみます。

すると、数式を入力した「B52 」が「B51 」の場所に移動したために、数式内の「B51」だった場所が計算式になってしまうために、「#REF!」が表示されています。ちょっと言葉では説明が分かりにくいと思いますので、実際に操作してみてください。
修正方法

修正方法は意外とオーソドックスになります。数式の「#REF!」を削除すれば、合計の計算結果は返されます。行を削除する前の状態に戻すには、再度行を追加してセルに数値を入力して、計算式を書き直す必要があります。
最近利用者が増えている ARRAYFORMULA や SORT、FILTER 関数において、「データを展開しようとした先に、すでに手入力の文字があって邪魔をしている(展開がブロックされている)」ときにも、最新のスプレッドシートでは #REF!(展開できません)が出ます。
マスターが教える「エラーを出さない綺麗なシート作り」のコツ
- 入力ルールを統一する(データの入力規則): #VALUE! の原因になる『202210月01日』のような表記の揺れを防ぐには、メニューの『データ』→『データの入力規則』で、日付しか入力できないように制限をかけておくのがプロの方法です。
- SUM関数は「カンマ」より「コロン」: #ERROR! の例で SUM(D28:D37, E28:E37) とカンマで繋ぐ方法を紹介しましたが、もし隣り合った列であれば SUM(D28:E37) のように『:(コロン)』で範囲を丸ごと囲んでしまう方が、数式がシンプルになってミスが減ります。
- まずは「コピー」して試すクセを: 「元の表を大きく書き換える時は、シートを右クリックして『コピーを作成』し、テスト用のシートで数式を試してから本番に反映させると、#REF! で元データを壊すリスクを完全に防げます。」
まとめ
お疲れ様でした!一見怖そうに見えるスプレッドシートのエラーですが、正体が分かればどれもシンプルな原因ばかりだったと思います。
- 「0で割れないよ!」の合図なら、#DIV/0!
- 「データが見つからない!」の合図なら、#N/A
- 「関数名や文字のルールが違うよ!」の合図なら、#NAME? や #ERROR!
- 「日付や数値の形式がおかしいよ!」の合図なら、#NUM! や #VALUE!
- 「参照していたセルがいなくなっちゃった!」の合図なら、#REF!
エラーが出たときは、シートがあなたに「ここを直せばもっと良い表になるよ」と教えてくれているチャンスです。エラー表示の上にそっとマウスカーソルを合わせると、具体的なヒントが表示されることも忘れないでくださいね。
今回ご紹介した知識を頭の片隅に置いておけば、明日からエラー画面を見ても、焦らずスマートに対処できるようになりますよ!
今回も最後までお読みいただき、ありがとうございました。





コメント