ARRAYFORMULA関数の使い方としくみ|草野球成績管理表で全選手の打率を一括計算する例で解説

フォーム・シート作成

スプレッドシートで「1つの式を範囲全体に一気に適用したい」ときに使うのがARRAYFORMULA関数です。草野球の成績管理表で、全選手の打率を1つの式でまとめて計算する場面を例に、使い方と内部のしくみを解説します。

ARRAYFORMULA関数とは

📝 ARRAYFORMULA関数の役割(一言でいうと)

本来は1つのセルにしか結果を返さない計算式を、指定した範囲全体にまとめて適用し、複数セル分の結果を一度に返す関数です。成績管理表では「全選手の打率」「全試合の防御率」など、同じ計算を行方向にずらっと並べたい場面で活躍します。

基本の書式はこうです。

=ARRAYFORMULA(計算式)

カッコの中に入れる「計算式」の部分には、単一セルではなく「D2:D10」のようなセル範囲を使った計算式をそのまま書きます。

成績管理表での実例:全選手の打率を1つの式で出す

大阪グーニーズの個人成績シートに、選手ごとの通算打数・通算安打が並んでいるとします。C列が打数、D列が安打、E列に打率を表示したい場合を考えてみましょう。

選手名 打数 安打 打率
SUZUKI 40 14 0.35
NAKATA 36 9 0.25
YAMAMOTO 30 12 0.4

この打率(D列÷C列)を全選手ぶん一度に計算したいとき、式はこうなります。

✅ 全選手の打率を一括計算する式
=ARRAYFORMULA(D2:D10/C2:C10)

これをE2セルにだけ入力すると、E3・E4…E10まで、行ごとの「安打÷打数」の結果が自動的に一括で表示されます。1行ずつ式を入力したり、下にコピーしたりする必要がありません。

STEP 1
結果を表示したい先頭セルを選択する

打率の一覧を表示したい範囲の一番上のセル(例:E2)をクリックして選択します。ARRAYFORMULAは、この1セルに式を入れるだけで下の行にも結果が展開されます。

STEP 2
「=ARRAYFORMULA(」に続けて、範囲を使った計算式を書く

カッコの中には「D2:D10/C2:C10」のように、単一セルではなく範囲どうしの計算式をそのまま書きます。ここが通常の数式との一番の違いです。

STEP 3
「)」で閉じてEnterキーで確定する

式を確定すると、入力したセルだけでなく、範囲に含まれる行すべてに一気に結果が表示されます。

しくみを理解する:ARRAYFORMULAは何をしているのか

📝 ARRAYFORMULAの内部動作

通常の数式は、1つのセルに対して1回だけ計算を行います。「D2:D10まで同じ計算をしたい」というときに、これまでは1行目の式を作ってから下の行へコピー(オートフィル)することで、同じ処理を1行ずつ繰り返させていました。

ARRAYFORMULAは、参照した範囲をひとまとまりの「配列」として扱い、その配列に含まれる要素(D2とC2、D3とC3…)ひとつひとつに、カッコの中の計算式を自動的に当てはめていきます。1つの式でありながら、内部では行の数だけ同じ計算が実行されている、というイメージです。

よくあるミス:結果が正しく表示されない原因

⚠️ 原因1:2つの範囲の行数が揃っていない

「D2:D10」と「C2:C9」のように、割り算の左右で範囲の行数がずれていると、サイズが合わないというエラーになり結果が返ってきません。ARRAYFORMULAの中で範囲どうしを組み合わせるときは、行数を必ず揃えるようにしてください。

⚠️ 原因2:途中のセルに式を上書き入力してしまう

ARRAYFORMULAで展開された結果は、E2だけでなくE3以降のセルにも自動で表示されていますが、実体の式が入っているのはE2だけです。E5などに別の値をうっかり手入力すると、そこだけ配列の展開が止まってしまい、以降の行が空白になることがあります。値を直接入力せず、必要な修正は元のD列・C列側で行うようにしましょう。

✅ この記事のまとめ
  • ARRAYFORMULA関数は「1つの式を範囲全体に一括適用する」関数
  • 先頭のセルに式を1つ入れるだけで、下の行にも自動で結果が展開される(コピー不要)
  • 組み合わせる範囲どうしの行数を揃えることと、展開範囲を手入力で上書きしないことが使いこなしの2大ポイント

次回予告

次回のテーマは「QUERY関数」です。SQL風の構文でデータを抽出・集計する仕組みを、条件に合う成績だけを別シートに抽出表示する例で解説していきます。

▶︎ 次回:QUERY関数の使い方としくみ

コメント

タイトルとURLをコピーしました