スプレッドシートのARRAYFORMULA関数の使い方|範囲に一括適用

スポンサーリンク

「この数式、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行目ノート2005
3行目ペン15010
4行目消しゴム803
5行目ファイル3007

やりたいこと: 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/AVLOOKUP等と組み合わせたとき検索値が見つからない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の他にもデータを一括処理する関数があります。

比較項目ARRAYFORMULAFILTER関数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の技を発信しています。

関連記事

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