Googleデータアナリティクス：表計算ソフトのエラーと修正

# はじめに

本記事は、Googleデータアナリティクスのプロフェッショナル認定証のプログラムより、参照させて頂いています。興味を持った方は、是非受講してみてください。

https://www.coursera.org/professional-certificates/data-analytics-japanese

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2358573/f218c6bc-27a9-6aa7-4dfa-8e63bd3928b7.png" width="800">

# 表計算ソフトのエラーと修正

### <font color="MediumBlue">DIVエラー</font>

DIV エラーは、数式がセル内の値を ゼロで割ろうとしたり、 空のセルで割ろうとしたりすると発生します。 

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2358573/b006dd0e-d47a-da01-f967-e3ccb053cd50.png" width="600">

この問題を回避するために 自動的に「該当なし」と入力したいとします。 そんなときは、IFERROR 関数を使いましょう。 ゼロを含むセルによって引き起こされる DIV エラーが発生した場合、 「該当なし」という文言が 表示されるようにします。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2358573/e0f6bc0d-df2a-8a73-99d7-bbdf021f60a7.png" width="600">

### <font color="MediumBlue">ERROR</font>

 Google スプレッドシートでは、 ERRORは入力された数式が解釈できない、 ということを示します。 これは解析エラーとも呼ばれます。 例えば、 B 列と C 列の合計タスク数を集計したい場合 SUM 関数を使いますが、 ＝SUM(B2:B6 C2:C6)という数式は エラーになります。 よくよく見てみると、 セル範囲 B2:B6 と C2:C6 の間に カンマがないことがわかります。 

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2358573/d43054bd-b82d-847f-9312-f83375c57db8.png" width="500">

これを解決するには、 セル範囲の間にカンマを挿入して、 各データ項目の終わりを示すようにします。 これは区切り文字と呼ばれるもので、 追って詳しくご説明します。 これで、この数式は タスクの総数を 25 として 正しく計算できるようになりました。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2358573/f7bb2180-e23e-09b0-b8de-2d5957ebf0f9.png" width="500">

### <font color="MediumBlue">N/Aエラー</font>

N/Aエラーは、 計算式のデータがスプレッドシートで 見つからないことを意味します。 一般に、これはデータが存在しない、 ということを意味します。 このエラーは、 VLOOKUP などの関数を使用した場合に よく発生します。 VLOOKUP は、列の中の特定の値を検索して、 対応する情報を返します。 ここでは、ナッツとその価格の リストが表示されています。 VLOOKUP を使用して、スプレッドシートで リストの価格を検索し、 割り当てられた部分を使用して 各店舗の価格を計算します。 

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2358573/9b7ac09a-d745-8ac0-afbb-6f0757e799af.png" width="500">

しかし、セル B49 と C49 に N/Aエラーがありますね。 VLOOKUP の数式は正しいのに、 何が起こっているのでしょうか？ ナッツの名前をよく見てみると、 ルックアップテーブルに 「Almond」では一致するものがなく 代わりに複数形の「Almonds」が使用されています。 

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2358573/617c28c7-ef9b-75c6-9807-7bf8a0980f68.png" width="600">

そこで、Almond を Almonds に変更すると、 誤字が修正され、 正しい価格が入力されるようになります。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2358573/5939ce56-08a4-e805-e3c0-c4d349a0fb98.png" width="６00">

### <font color="MediumBlue">NAMEエラー</font>

タイプミスといえば、 タイプミスが原因で NAME エラーが発生することがあります。 NAME エラーは、 数式の名前が間違っている場合に起こります。 例えば、ナッツの価格のスプレッドシートで NAME エラーを確認したとします。 
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2358573/e30673b7-6b7e-4b1c-3547-2b8096159284.png" width="500">

よく見ると、 セル B21 の VLOOKUP 関数のスペルが 間違っており 余分な O が 1 つあるため、 価格とそれを参照する計算の 両方で NAME エラーが 発生しています。 

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2358573/e56da83d-73c2-280c-13b4-e1327ce5227d.png" width="400">

このエラーを修正するには、 VLOOKUP の余分な O を削除すれば よいでしょう。

### <font color="MediumBlue">NUMエラー</font>

NUM エラーは ある計算式の計算が データで指定されたとおりに 実行できない、ということを 教えてくれます。 その計算にはデータが意味をなさないのです。 

例えば、大規模な建設プロジェクトがあり、 重要なマイルストーンに到達するまで 何ヶ月かかるかを 表計算ソフトで記録しているとします。 このような時には、DATEDIF 関数を使用すれば 開始日と終了日の間の月数を 計算することができます。 この関数では、 参照する最初のセルに 開始日を、2番目のセルに 終了日を指定する必要があります。 この例では、セル B2 とセル C2 が それぞれ参照されています。 このスプレッドシートでは、 開始日と終了日の間の月数を 計算したいため、 M で月を表示しようとしています。 しかし、セル D6 で NUM エラーが発生しています。 終了日が開始日より前にあるため DATEDIF 関数はその間の月数を計算できない ということがわかりますね。 どうやら、開始日と終了日が 知らぬ間に 入れ替わっていたようです。 

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2358573/0595b977-5f48-cf93-678b-4ddf48104f5c.png" width="700">

しかし、セル D6 で NUM エラーが発生しています。 終了日が開始日より前にあるため DATEDIF 関数はその間の月数を計算できない ということがわかりますね。 どうやら、開始日と終了日が 知らぬ間に 入れ替わっていたようです。 このような時は念のため、 元データの検証を依頼しましょう。 とりあえず現時点では、 数式内のセルの順番を逆にして、 一時的にエラーを回避するとします。 さて、結果は 9 ヶ月でした。 

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2358573/4be0147f-eb3f-8363-29ed-be46a77e2d69.png" width="600">

### <font color="MediumBlue">VALUEエラー</font>

スプレッドシートの開始日のところに クライアントの名前が 入れられていたらどうでしょう？ ご想像のとおり、エラーが発生します。 

VALUE エラーは、数式や参照されるセルに 問題があることを示す場合に表示されます。 何が問題であるかは すぐにはわからないことが多いため、 このエラーは修正に少し 手間がかかるかもしれません。 この場合、開始日のところに John Weltyという名前が入力されているため、 セル D6 の DATEDIF 関数で 計算が不可能な状態になっています。 直すには、John Welty を、 正しい開始日 2016 年 9 月 1 日に 置き換えましょう。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2358573/b325210e-28bc-0f08-83d3-9554da8979d0.png" width="700">

### <font color="MediumBlue">REFエラー</font>

これは数式で参照されているセルが 削除され、その結果、 数式が計算できなくなった場合に よく出てくるエラーです。 ここに、会社の昼食会の席数を 計算するための スプレッドシートがあります。 

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2358573/d62a9675-c5ca-3c9b-0eef-12b4e79404c8.png" width="400">

2 階席は使用しない、 ということになったため、 4 行目を削除してみましょう。 すると、セル B5 で 使用可能な座席の合計を計算しようとして REF エラーが発生しています。 

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2358573/438bbfb2-5e42-bf6a-0b94-35ee477bfd1e.png" width="600">

 これを解決するには、 セル B2 と B3 の値を足すように 数式を変更すればよいのです。 

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2358573/e301b56c-c8cd-47c5-df91-b2cab5a8561b.png" width="400">

さらに言うと、この場合、 セルの値を直接参照して 加算するのではなく、 SUM 関数とセルの範囲を使用することで、 REF エラーを防げたかもしれません。 試しに 10 行目を削除してみると、 SUM 関数で出された空席の合計が 計算されます。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2358573/c866aa74-0a33-82bd-5fbb-aa88c61e1e57.png" width="400">