前回は参照先が消えたときに出る #REF! エラーを解説しました。今回は#VALUE!エラーです。
#VALUE!は一言でいうと「計算できない値が式に混ざっているとき」に出るエラーです。たとえば数値を使う計算式のセルに文字列が入り込んでしまったとき、スプレッドシートは「これは足せない・割れない」と判断して#VALUE!を返します。成績管理表では特に投球回の入力ミスと数値列への文字混入で起きやすいです。具体的なパターンを順番に確認していきましょう。
#VALUE!エラーとは何か
「数値を期待している場所に、数値として使えないデータが入っている」状態です。
| 期待しているデータ | 実際に入っているデータ | 結果 |
|---|---|---|
| 数値(投球回) | 「1回1/3」(文字列) | #VALUE!エラー |
| 数値(得点) | 「7」(全角数字) | #VALUE!エラー |
| 数値(盗塁数) | 「1個」(数字+文字) | #VALUE!エラー |
#DIV/0!は「0で割った」という明確な原因でしたが、#VALUE!は「どこかに変なデータが入っている」という少し曖昧な原因なので、特定に少し手間がかかります。
この成績管理表で#VALUE!が起きやすい3つのパターン
パターン①:投球回に文字列を入力してしまった
投球回はフォーム(投手)シートのH列に「1.1」「0.2」「7.0」のような小数値として入力するルールです(第24回参照)。実際のデータを確認すると、すべての行で正しく数値(float型)として入力されています。
しかし、フォームのテキスト入力欄を使っている場合や手動でセルに直接入力するときに、誤って「1回1/3」「1と1/3」「1.1回」のような文字列を入力してしまうことがあります。こうなると、SUMPRODUCT関数で投球回を変換している防御率の計算式が#VALUE!を返します。
| 意味 | ✅ 正しい入力 | ❌ エラーになる入力例 |
|---|---|---|
| 1回と1/3(1アウト) | 1.1 | 1回1/3 1と1/3 1.1回 |
| 1回と2/3(2アウト) | 1.2 | 1回2/3 1と2/3 1.2回 |
| 7回ちょうど | 7.0 または 7 | 7(全角) 7回 七 |
小数点の「.」は半角で入力してください。「.」(全角ピリオド)を使うと文字列として認識されます。
パターン②:得点・失点・盗塁数などの数値列に文字が混入した
フォーム(チーム成績)シートの得点・失点列、フォーム(野手)シートの打点・盗塁列は数値として入力するセルです。ここに「7点」「1個」のような文字が混ざると、SUMIF関数で集計するチームシートのG列(得点)・H列(失点)が#VALUE!になります。
また、年間(野手)シートの打数・安打などの集計列は次のような式で集計しています。
=IF($B2="", "", IFERROR(
SUMIF('試合当日(野手)'!$D:$D, $B2,
INDEX('試合当日(野手)'!$1:$100, 0,
MATCH(F$1, '試合当日(野手)'!$1:$1, 0))),
0))
選手名(D列)で絞り込み、ヘッダー行の列名で集計対象の列を動的に特定してSUMIFで合計しています。この式はIFERRORで囲まれているため、試合当日(野手)シート側のデータが数値であれば正しく動きます。逆に文字列が混入すると集計が狂う原因になります。
パターン③:全角数字・全角記号の混入
スマホから入力するとき、日本語入力モードのまま数字を打つと全角数字(「1」「2」)になることがあります。スプレッドシートは全角数字を数値として認識しないため、それを参照・計算する式が#VALUE!を返します。
| 種類 | 例 | スプレッドシートでの扱い |
|---|---|---|
| 半角数字 | 1 2 7 | ✅ 数値として認識 |
| 全角数字 | 1 2 7 | ❌ 文字列として認識 |
| 半角ピリオド | 1.1 | ✅ 小数値として認識 |
| 全角ピリオド | 1.1 | ❌ 文字列として認識 |
#VALUE!が出たときの特定手順
#VALUE!は「どこかに変なデータがある」というエラーなので、どのセルに原因があるのかを特定するのが最初のステップです。
エラーが出ているセルをクリックし、数式バーでどのシートのどの列を参照しているかを確認します。「’フォーム(投手)’!H列」なら投球回が原因、「’フォーム(チーム成績)’!E列」なら得点列が原因、といった具合に参照先を特定します。
参照先のシートを開き、数値が入っているはずの列をスキャンします。セルの内容が左揃えになっているものは文字列として認識されているサインです(数値はデフォルトで右揃えになります)。
怪しいセルが見つかったら、隣の空きセルに =ISNUMBER(対象セル) と入力します。TRUEが返れば数値、FALSEが返れば文字列(または空白以外の何か)です。
文字列と判定されたセルをクリックして、正しい半角数値を入力し直します。「1回1/3」と入力されていれば「1.1」に、「7」(全角)なら「7」(半角)に書き直してEnterキーで確定します。
Googleスプレッドシートでは、数値を入力するとセルの文字が右揃えになります。文字列として認識されている場合は左揃えになります。
数値が入っているはずの列をざっと眺めたとき、1つだけ左揃えになっているセルがあれば、そこが#VALUE!の原因です。ISNUMBERを使わなくてもこれだけで発見できることが多いです。
VALUE関数で文字列を数値に変換する方法
入力し直すのが最も確実ですが、数が多い場合はVALUE関数で文字列を数値に変換することもできます。
=VALUE(対象セル)
「文字列の7」を「数値の7」に変換してくれる関数です。ただし「1回1/3」のような本来の数値に戻せない文字列には使えません(この場合は手動で入力し直すしかありません)。
全角数字「7」は VALUE(“7”) = 7 として変換できます。変換後の値を正しいセルに貼り付け(値のみ貼り付け)して元のセルと置き換えます。
IFERRORで#VALUE!を一時的に隠す方法(応急処置)
原因の特定に時間がかかるとき、先にエラー表示だけを消して運用を続けたい場合は IFERRORで応急処置できます。
第85回でも解説したとおり、IFERRORはエラーを「0」などに置き換えて隠すだけです。投球回が文字列のまま残っていれば、防御率の計算は0として表示されますが、正しい値ではありません。
あくまでも「試合後すぐにホームページを更新しなければならない」などの緊急時の応急処置として使い、後で必ず原因のデータを修正してください。
実際のデータで確認する:投球回のデータ型
フォーム(投手)シートの投球回(H列)を確認すると、現在のデータはすべて正しく数値(小数値)として入力されています。
| 試合日 | 投手 | 投球回(H列の値) | データ型 | ISNUMBER |
|---|---|---|---|---|
| 1/25 | NAKATA | 1.1 | 数値(float) | TRUE |
| 1/25 | YAMAMOTO | 0.2 | 数値(float) | TRUE |
| 2/1 | SUZUKI | 7.0 | 数値(float) | TRUE |
現時点では全行が正しく数値として入力されています。Googleフォームの数値入力欄(投球回は小数を入力できるよう設定している)を使っている限り、自動的に数値として記録されます。#VALUE!が起きるとすれば、フォームを使わずにスプレッドシートのセルに直接入力したときがほとんどです。
#VALUE!を防ぐための3つの習慣
| 習慣 | 理由 |
|---|---|
| 成績入力は必ずGoogleフォームから行う | フォームの数値入力欄は自動的に数値として記録される。スプレッドシートへの直接入力はミスのリスクが高い |
| 投球回は「1.1」形式の半角小数で入力する | 「1回1/3」「1と1/3」などの表記は文字列になる。小数点も半角「.」を使う |
| 数値列に単位をつけない | 「7点」「1個」のように単位をつけると文字列になる。数値だけを入力し、単位はヘッダーで表現する |
- #VALUE!は「数値を期待している場所に計算できない値が入っているとき」に出るエラー
- この成績管理表で起きやすいのは①投球回への文字列入力(「1回1/3」など)、②数値列への全角数字混入、③数字に単位をつけた入力(「7点」など)の3パターン
- 発見のコツは「数値列で左揃えになっているセルを探す」——数値は右揃え、文字列は左揃えが目印
- 確認には
=ISNUMBER(対象セル)が便利——TRUEなら数値、FALSEなら文字列 - 修正は問題のセルを正しい半角数値で上書きするのが基本。多数ある場合はVALUE関数で変換する方法もある
- 最大の予防策は「成績入力は必ずGoogleフォームから」——フォームの数値欄を使えば自動的に数値として記録される
次回予告
次回は「COUNTIFで正しくカウントされない場合の対処法」。打席結果の記号をCOUNTIFで数えているのに、カウントが0になってしまうケースがあります。スペースの混入・全角半角の不一致・改行コードの混入など、見た目ではわかりにくい原因とチェック方法を解説します。



コメント