「この数式、100行分コピーしなきゃ…」。スプレッドシートで同じ数式を何十行もドラッグしてコピーした経験、ありませんか?
行が増えるたびにコピーし直す手間もかかります。コピーし忘れて計算が抜ける事故も起きがちです。
そんな悩みを一発で解決するのが ARRAYFORMULA関数 です。1つのセルに数式を入れるだけで、列全体に自動で適用してくれます。
この記事では、基本の書き方からIF・SUMIFとの組み合わせまで紹介します。
ARRAYFORMULA関数とは?
ARRAYFORMULA関数(アレイフォーミュラ関数)は、1つの数式を範囲全体に一括で適用する Googleスプレッドシート独自の関数 です。
英語の「array(配列)」と「formula(数式)」を組み合わせた名前で、「配列数式」とも呼ばれます。
通常、数式は1つのセルにしか効きません。たとえば =A2*B2 はそのセルだけの計算です。
ARRAYFORMULA関数を使うと、この計算を一気に下の行すべてに展開できます。数式のコピーが不要になるのが最大のメリットです。
NOTE
ARRAYFORMULA関数はGoogleスプレッドシート独自の関数です。Excelには同じ名前の関数はありません。Excelで同様の処理をするには、Microsoft 365の「スピル」機能や
Ctrl+Shift+Enterの配列数式を使います。
ARRAYFORMULA関数の書き方(構文と引数)
基本構文
=ARRAYFORMULA(配列数式)
引数の説明
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 配列数式 | 必須 | 範囲を使った数式や式(例: A2:A100*B2:B100) |
ポイントは セル参照を「範囲」に書き換える ことです。
通常の数式 =A2B2 を範囲に変えて =ARRAYFORMULA(A2:A100B2:B100) と書きます。
これだけで、A2B2、A3B3、A4*B4…と全行の計算結果が自動で展開されます。
TIP
ARRAYFORMULA関数を入力するショートカットがあります。数式を入力した状態で
Ctrl+Shift+Enter(MacはCmd+Shift+Enter)を押すと、自動でARRAYFORMULA()が追加されます。
ARRAYFORMULA関数の基本的な使い方
ここでは、次のような売上データを使って説明します。
| A列(商品名) | B列(単価) | C列(数量) | |
|---|---|---|---|
| 2行目 | ノート | 200 | 5 |
| 3行目 | ペン | 150 | 10 |
| 4行目 | 消しゴム | 80 | 3 |
| 5行目 | ファイル | 300 | 7 |
やりたいこと: D列に「単価 x 数量」の金額を一括で計算する。
通常なら D2 に =B2*C2 と入力し、D5 までドラッグコピーしますよね。
ARRAYFORMULAなら、D2 に1つだけ数式を入れれば完了です。
=ARRAYFORMULA(B2:B5*C2:C5)
D2からD5まで、すべての行に計算結果が自動で表示されます。
ここがポイントです。数式が入っているのはD2セルだけです。D3〜D5には数式がありません。それなのに、すべての行に結果が出ています。
TIP
範囲の終わりを
B2:Bのように列だけにすると、データが増えても自動で対応します。空の行には0が表示されますが、後述のIF関数との組み合わせで解決できます。
ARRAYFORMULA関数の実践的な使い方・応用例
IF関数と組み合わせて空白行を処理する
ARRAYFORMULA関数で範囲を広めに取ると、データがない行にも 0 や不要な値が表示されます。
これを防ぐには、IF関数と組み合わせます。
=ARRAYFORMULA(IF(B2:B="", "", B2:B*C2:C))
この数式は「B列が空白なら空白を返し、データがあれば計算する」という意味です。これで空行には何も表示されません。
IF+ARRAYFORMULAは最も使用頻度の高い組み合わせです。ぜひセットで覚えてください。
COUNTIF・SUMIFと組み合わせて集計する
ARRAYFORMULA関数は、COUNTIF関数やSUMIF関数とも組み合わせられます。
たとえば、各商品の出現回数を一括で数えたい場合はこう書きます。
=ARRAYFORMULA(COUNTIF(A2:A, A2:A))
A列のすべての値に対して、同じ値が何回出てくるかを一括で集計します。
SUMIF関数と組み合わせれば、カテゴリ別の合計金額を一括で算出できます。
=ARRAYFORMULA(SUMIF(A2:A, E2:E, D2:D))
E列にカテゴリ一覧を用意しておけば、各カテゴリの合計がまとめて出力されます。
文字列の結合を一括で行う
名前の列(姓と名)を結合したいとき、通常は1行ずつ =A2&" "&B2 と書きます。
ARRAYFORMULAなら一発です。
=ARRAYFORMULA(A2:A&" "&B2:B)
列全体の文字列結合が1つの数式で完了します。
LEN関数で文字数を一括チェックする
入力データの文字数を一括で確認したいときにも使えます。
=ARRAYFORMULA(IF(A2:A="", "", LEN(A2:A)))
LEN関数をARRAYFORMULAで展開すれば、すべてのセルの文字数を一括で表示できます。空白行にはIF関数で空文字を返しています。
よくあるエラーと対処法
| エラー / 症状 | 原因 | 対処法 |
|---|---|---|
#REF! | 出力先のセルにデータがある(展開先がふさがっている) | 出力先の下方向を空けるか、出力位置を変更する |
#N/A | VLOOKUP等と組み合わせたとき検索値が見つからない | IFERRORで囲む: =ARRAYFORMULA(IFERROR(VLOOKUP(...), "")) |
#VALUE! | ARRAYFORMULAに対応していない関数を使った | 対応関数かどうかを確認する(後述) |
空白行に 0 が表示される | 空のセルに対しても計算が実行されている | IF(条件="","",計算) で空白行を除外する |
| 結果が1行分しか出ない | セル参照が単一セル(A2)のまま | 範囲参照(A2:A)に書き換える |
特に注意したいのが 「結果が1行分しか出ない」 パターンです。
ARRAYFORMULAを付けても範囲を指定していなければ効果がありません。=ARRAYFORMULA(A2B2) ではなく =ARRAYFORMULA(A2:AB2:B) のように範囲にしてください。
TIP
すべての関数がARRAYFORMULAに対応しているわけではありません。AND関数・OR関数・QUERY関数などは非対応です。代わりに
*(AND相当)や+(OR相当)の演算子を使います。AND・OR関数の代替については AND関数の使い方 を参考にしてください。
FILTER・QUERYとの違い・使い分け
スプレッドシートには、ARRAYFORMULAの他にもデータを一括処理する関数があります。
| 比較項目 | ARRAYFORMULA | FILTER関数 | QUERY関数 |
|---|---|---|---|
| 主な用途 | 既存の関数を全行に一括適用 | 条件に一致する行の抽出 | 抽出+集計+並べ替えを一括 |
| 動作イメージ | 「列ごとの計算」を自動化 | 「行の絞り込み」を自動化 | SQL風にデータを操作 |
| 構文の難易度 | やさしい | やさしい | やや難(SQL風の構文) |
| 向いている場面 | 列の計算・変換を一括で | 条件でデータを抽出 | 複雑な集計レポート |
ざっくりまとめると:
- 「列の計算を全行に適用したい」 → ARRAYFORMULA
- 「条件に合う行を取り出したい」 → FILTER関数
- 「集計やグループ化もしたい」 → QUERY関数
ARRAYFORMULAは「計算の自動化」、FILTERは「抽出の自動化」と覚えるとわかりやすいです。
まとめ
この記事では、GoogleスプレッドシートのARRAYFORMULA関数の使い方を解説しました。
- 基本:
=ARRAYFORMULA(範囲を使った数式)で列全体に一括適用 - 最大のメリット: 数式のコピーが不要。1セルだけで全行を処理
- IF関数との組み合わせ: 空白行の
0表示を防ぐ定番テクニック - COUNTIF・SUMIFとも連携: 集計処理も一括で実行可能
- エラー対策: 範囲参照(A2:A)にすることと、空白行のIF処理がポイント
ARRAYFORMULA関数はGoogleスプレッドシートならではの便利な関数です。「数式を何十行もコピーしている」という方は、ぜひ試してみてください!
この記事を書いた人
biz-tactics編集部。事務職の現場で本当に使えるExcel・スプレッドシート・AIの技を発信しています。
