ARRAYFORMULAやSUMPRODUCTなど、範囲をまとめて処理する「配列関数」は便利な反面、慣れないうちは#REF!や#VALUE!といったエラーに戸惑いがちです。草野球の成績管理表でよく出会うエラーのパターンと、その直し方を初心者向けに解説します。
配列関数のエラーとは
配列関数は「1つのセルの計算」ではなく「複数セル分の計算結果をまとめて出力する」動きをします。そのため、出力先に別のデータがすでに入っていたり、扱う範囲の行数・列数が揃っていなかったりすると、通常の関数では起きないタイプのエラーが発生します。
特に成績管理表でよく出るのは、次の2つです。
#REF! … 出力先の範囲がふさがっているときに出る #VALUE! … 計算に使う範囲同士のサイズ(行数)が合っていないときに出る
成績管理表での実例:ARRAYFORMULAで#REF!が出るケース
個人成績シートで、F列に「打率」をARRAYFORMULAで一括計算しようとした場面を例にします。C列に打数、D列に安打が入っているとします。
| 試合日 | 打数(C) | 安打(D) | 打率(F) |
|---|---|---|---|
| 4/6 | 4 | 2 | #REF! |
| 4/13 | 3 | 1 | (手入力の値が残っている) |
| 4/20 | 4 | 0 | … |
F2セルに以下の式を入力しても、F3以降にすでに手入力の値が残っていると、F2に#REF!が表示されてしまいます。
=ARRAYFORMULA(D2:D30/C2:C30)
この1つの式だけでF2からF30まで打率が一括で表示されます。F3以降には何も入力しないのがポイントです。
エラーが出たセルから、式が本来出力するはずの範囲(この例ではF3〜F30)に何か値が入っていないか確認します。
F3からF30までを選択し、Deleteキーで中身を空にします。ARRAYFORMULAの式が入っているF2セルは削除しないよう注意してください。
出力範囲が空になれば、F2の式が自動的にF3以降まで結果を展開し、エラーが解消されます。
しくみを理解する:なぜサイズ不一致でエラーになるのか
ARRAYFORMULAは、D2/C2、D3/C3…という計算を1行ずつ行っているように見えて、実際には範囲全体をひとまとまりの「配列」として一括処理し、その結果を出力先の範囲にまとめて書き込んでいます。
このとき、出力先のどこか1セルでもすでに別の値が入っていると、スプレッドシートは「書き込み先が確保できない」と判断し、範囲全体の出力を取りやめて#REF!を返します。一部だけ計算されて一部だけエラー、ということは起きません。
SUMPRODUCTの#VALUE!も考え方は同じです。かけ合わせる範囲同士(例:投球回の配列と登板数の配列)の行数が一致していないと、「どの行とどの行を掛け合わせればよいか」が確定できず、計算そのものが成立しなくなります。
よくあるミス
以前は1行ずつ関数を入れて計算していたシートを、あとからARRAYFORMULAに変更したときに起きやすいミスです。古い式や値を消し忘れたまま新しい式を上のセルに入れると、出力先がふさがった状態になり#REF!が出ます。
「C2:C30」と「D2:D31」のように、片方だけ範囲の終わりの行がずれていると#VALUE!になります。複数の範囲を扱う式では、すべての範囲の開始行・終了行を揃えることが大切です。
- 配列関数は範囲全体をまとめて計算し、出力先の範囲にひとまとめで書き込む仕組み
- #REF!は出力先の範囲が別データでふさがっているサイン
- #VALUE!は掛け合わせる範囲同士の行数が揃っていないサイン。複数範囲の開始行・終了行は必ず揃える
次回予告
次回のテーマは「打率計算の複合式」です。ここまで解説してきたIFERRORやSUM、COUNTを組み合わせて、実際に成績管理表で使う打率の計算式を1つずつ組み立てながら解説していきます。



コメント