「Googleスプレッドシートで、毎月同じ数式を何百行もコピー&ペーストしている…」
「関数を入れたら、シートがどんどん重くなってしまった…」
「複数人で管理しているシートの数式が、いつの間にか誰かに消されていて困る…」
このような悩みは、ARRAYFORMULA(アレイフォーミュラ)関数で解決できます。
ARRAYFORMULA関数は、スプレッドシートの反復作業をなくし、
数式管理をシンプルにする強力な機能です。「名前が難しそう」「使い方がわからない」と
敬遠されがちですが、基本さえ押さえれば誰でも活用できます。
本記事では、関数の初心者向けにARRAYFORMULAの基本から実用的な使い方までを分かりやすく解説します。日々の作業を効率化する知識を身につけましょう。
①:ARRAYFORMULA関数とは?
ARRAYFORMULA関数とは、一言でいうと
「1つの数式で、複数のセルに計算結果をまとめて出力できる関数」です。
通常、スプレッドシートで計算を行う場合、まず1つのセルに数式を入力し、
それをオートフィル機能(セルの右下の■をドラッグ)で下の行にコピーしていくのが一般的です。

しかし、この方法にはいくつかの問題があります。
- 手間がかかる:行が増えるたびに数式をコピーする必要がある。
- 修正が面倒:数式を修正する際、すべての行を修正し直さなければならない。
- ミスが起こりやすい:コピー漏れや、一部のセルだけ数式が消えてしまうといったヒューマンエラーが発生しやすい。
- 動作が重くなる:何千、何万ものセルに数式を入力すると、スプレッドシートのパフォーマンスが低下する場合がある。
ARRAYFORMULA関数は、これらの問題の多くに対応できます。
たった1つのセルにARRAYFORMULA関数を入力するだけで、
指定した範囲すべての計算を自動で行ってくれるのです。

(1)ARRAYFORMULA関数の3つのメリット
- 数式管理がシンプルに
指定した範囲の計算を、たった1つの数式で管理できます。そのため、行が追加されても数式をコピーする手間がなく、修正も元の数式1箇所を直すだけで完了します。 - 行の追加・削除に自動で対応
Googleフォームからの回答が追加されるシートなど、データが自動で増えていく場面で特に便利です。新しい行が追加されると、ARRAYFORMULA関数はそれを検知し、自動で計算を実行してくれます。 - シートの動作が軽快になることも
数千行にわたる数式を個別に計算させるよりも、1つのARRAYFORMULA関数で一括処理する方が、スプレッドシートへの負荷が少なくなり、全体の動作が軽くなる傾向があります。
②:ARRAYFORMULA関数の基本的な使い方
まずは、基本的な構文と使い方をマスターしましょう。
(1)構文
=ARRAYFORMULA(配列数式)
《配列数式》
計算結果が複数のセルになるような数式を指定します。例えば、B2:B10 * C2:C10 のように、
セル範囲を指定した計算式がこれにあたります。
(2)簡単な例 売上管理表
ここでは、商品の「単価」と「数量」から「金額」を計算する
簡単な売上管理表を例に見ていきましょう。
A | B | C | D | |
1 | 商品名 | 単価 | 数量 | 金額 |
2 | 商品A | 1,000 | 5 | |
3 | 商品B | 2,500 | 3 | |
4 | 商品C | 800 | 10 |
《従来のやり方》
- D2セルに =B2*C2 と入力する。
- D2セルの右下の■を、D4セルまでドラッグして数式をコピーする。
《ARRAYFORMULA関数を使うやり方》
- D2セルに =ARRAYFORMULA(B2:B4*C2:C4) と入力する。
これだけで、D2、D3、D4セルにそれぞれの計算結果が自動で表示されます。
さらに、B2:B のように行番号を省略して列全体を指定すると、
今後データが追加される行にも自動で計算が適用されるようになります。
=ARRAYFORMULA(B2:B*C2:C)
《ショートカットキー》
数式を入力した後、Enterキーの代わりに
Ctrl + Shift + Enter (Windows) / Cmd + Shift + Enter (Mac) を押すことでも、
ARRAYFORMULA関数を自動で付与できます。
③【実践編】ARRAYFORMULA関数と他の関数を組み合わせる
ARRAYFORMULA関数は、他の関数と組み合わせることで活用の幅が広がります。
ここでは、ビジネスで利用頻度の高い3つの組み合わせ例をご紹介します。
(1)IF関数との組み合わせ(頻出テクニック)
ARRAYFORMULA関数を使う上で、IF関数との組み合わせはよく使われるテクニックです。
特に、「データが入力されていない行には、数式の結果も表示させたくない」という場合に使用します。
《シーン》
営業担当者別の売上実績リストで、売上額が100万円以上なら「達成」、
未満なら「未達成」とC列に表示したい。
A | B | C | |
1 | 担当者 | 売上額 | 判定 |
2 | 佐藤 | 1,500,000 | |
3 | 鈴木 | 800,000 | |
4 | 高橋 | 1,200,000 | |
5 |
C2セルに、以下の数式を入力します。
=ARRAYFORMULA(
IF(B2:B="", "",
IF(B2:B>=1000000, "達成", "未達成")
)
)

《数式の解説》
この数式は、2つのIF関数が入れ子(ネスト)になっています。
- 外側のIF関数:IF(B2:B=””, “”, …)
- もし、B列のセルが空白(””)だったら、空白(””)を表示する。
そうでなければ、内側のIF関数を実行する。 - この処理により、売上額が未入力の行(5行目以降)に「未達成」と表示されてしまうのを防ぎます。この方法はARRAYFORMULA関数とセットでよく使われるため、覚えておくと便利です。
- 内側のIF関数:IF(B2:B>=1000000, “達成”, “未達成”)
- もし、B列のセルの値が1,000,000以上だったら、「達成」と表示する。
そうでなければ、「未達成」と表示する。
(2)VLOOKUP関数との組み合わせ
《シーン》
「売上実績シート」の商品IDをキーにして、
「商品マスタシート」から商品名と単価を自動で取得したい。
《シート構成》
売上実績シート
A | B | C | D | E | |
1 | 日付 | 商品ID | 商品名 | 数量 | 売上 |
2 | 7/1 | S-001 | 高性能マウス | 5 | 15,000 |
3 | 7/1 | S-003 | 24インチモニター | 10 | 250,000 |
4 | 7/2 | S-002 | 静音キーボード | 3 | 15,000 |
商品マスタシート
こちらが参照元のデータです。
A | B | C | |
1 | 商品ID | 商品名 | 単価 |
2 | S-001 | 高性能マウス | 3,000 |
3 | S-002 | 静音キーボード | 5,000 |
4 | S-003 | 24インチモニター | 25,000 |
《数式》
「売上実績シート」のE2セルに、以下の数式を入力します。
=ARRAYFORMULA(
IFERROR(
VLOOKUP(B2:B, '商品マスタ'!A:C, 3, FALSE)*D2:D
)
)
《数式の解説》
- VLOOKUP(B2:B, ‘商品マスタ’!A:C, 3, FALSE)
- B2:B(検索キーの範囲)を元に、’商品マスタ’!A:Cの範囲を検索し、見つかった行の3列目(単価)の値を返します。
- 商品マスタシートから取得した単価と、売上実績シートの数量(D列)を乗算して売上を算出します。
- FALSEは完全一致を意味します。
- VLOOKUP関数は、検索値が見つからない場合に #N/A というエラーを返します。IFERROR関数でVLOOKUP関数全体を囲むことで、もしエラーが発生したら、空白を表示するという処理を行っています。これにより、シートの見た目がスッキリします。
(3)SUMIF関数との組み合わせ
《シーン》
「売上明細シート」から、担当者別の売上合計を「担当者別集計シート」に一覧でまとめたい。
《注意点》
SUMIFやCOUNTIFなどの集計関数は、そのままARRAYFORMULAで囲んでも、
結果が配列として自動展開されません。しかし、計算の条件となる引数に
単一セルではなくセル範囲を指定することで、配列処理が可能になります。
《シート構成》
担当者別集計シート
A | B | |
1 | 担当者 | 合計売上 |
2 | 佐藤 | 170,000 |
3 | 鈴木 | 95,000 |
4 | 高橋 | 80,000 |
売上明細シート
こちらが参照元のデータです。
A | B | C | |
1 | 日付 | 担当者 | 売上金額 |
2 | 7/1 | 佐藤 | 50,000 |
3 | 7/1 | 鈴木 | 30,000 |
4 | 7/2 | 佐藤 | 120,000 |
5 | 7/3 | 高橋 | 80,000 |
6 | 7/3 | 鈴木 | 65,000 |
《数式》
「担当者別集計シート」のB2セルに、以下の数式を入力します。
=ARRAYFORMULA(
SUMIF('売上明細'!B:B, A2:A, '売上明細'!C:C)
)
《数式の解説》
- SUMIF(‘売上明細’!B:B, A2:A, ‘売上明細’!C:C)
- 通常のSUMIFと少し違うのは、第2引数の検索条件に A2 という単一セルではなく、A2:A という範囲を指定している点です。
- ARRAYFORMULAと組み合わせることで、「A2:Aの各セルの値を条件として、それぞれ合計を計算しなさい」という命令になり、結果をまとめて出力してくれます。
④【運用上の工夫】数式を1行目に設置するテクニック
ARRAYFORMULA関数をデータ行(2行目以降)に直接入力すると、
フィルターでの並べ替え時に数式が崩れるなど、実務上の問題が起こりやすくなります。
- フィルターで並べ替えができない: 数式が入った行が固定されず、データと一緒に並べ替えられてしまい、表示が崩れる。
- 数式が誤って削除されやすい: 共同編集者がデータ行と間違えて、数式を削除してしまうリスクがある。
- セルの保護がしにくい: データ入力範囲と数式セルが近いため、保護範囲の設定が複雑になる。
これらの問題を回避し、より安全にシートを運用するために、
数式自体を1行目のヘッダー(見出し)部分に設置することを推奨します。
1行目に数式を設置するには、ヘッダー名とARRAYFORMULAの結果を配列{}で結合します。
IF関数の例で見てみましょう。C列の判定結果を出す数式を、C1セルに以下のように入力します。
={ "判定";
ARRAYFORMULA(
IF(B2:B="",,
IF(B2:B>=1000000, "達成", "未達成")
)
)
}
《数式の解説》
- { “判定”; … }
- {}は、中の要素を配列としてまとめる記号です。
- “判定”が1行目の見出しになります。
- ;(セミコロン)は、データを縦に並べるという意味です。これにより、「判定」という見出しの下に、ARRAYFORMULAの結果が展開されます。
- IF(B2:B=””,, …)
- 計算範囲をB2:Bから始めることで、ヘッダー行である1行目を除外して計算しています。
このように設定することで、ヘッダー行は編集したり並べ替えたりする必要がないため、行ごと保護をかければ、誤って数式が変更される心配もありません。
⑤ARRAYFORMULA関数を使う際の注意点
便利なARRAYFORMULA関数ですが、いくつか知っておくべき注意点があります。
エラーが出た際は、まずこれらを確認してみてください。
(1)出力範囲に他のデータがあるとエラーになる
ARRAYFORMULA関数が結果を出力しようとする範囲に、手入力された文字や別の数式がすでに入っていると、#REF! というエラーが発生します。

これは「数式の結果を展開したいのに、出力先のセルにすでにデータがあるため展開できない」というエラーです。数式の結果が出力される範囲(下の行や右の列)に、文字や別の数式が入っていないか確認し、削除してください。
(2)一部の関数は直接使えない(要工夫)
記事中で紹介したSUMIFのように、一部の関数はそのままではARRAYFORMULAに対応していません。(例: COUNTIF, SUMIFS, COUNTIFSなど)
これらの関数を使いたい場合は、今回のように引数を工夫したり、
QUERY関数やFILTER関数といった、より高度な関数で代替する必要があります。
⑥まとめ
今回は、スプレッドシートの作業効率化に役立つARRAYFORMULA関数について解説しました。
最後に、重要なポイントを振り返りましょう。
- 基本は ARRAYFORMULA(計算したい範囲の式)
- 数式の管理は、1つのセルでシンプルになる
- 行が追加されても自動で計算が適用される
- 空白行を無視するために IF(範囲=””, “”, …) の組み合わせが有効
- VLOOKUPやSUMIFなど、多くの関数と組み合わせ可能
- エラーが出たら「出力範囲のデータ」をまず確認する
- 安全な運用のために、数式は1行目に設置するのがおすすめ
ARRAYFORMULA関数を使いこなせば、手作業での数式コピー&ペーストから解放され、
より本質的な業務に集中できます。数式管理もシンプルになるため、
複数人での共同編集におけるヒューマンエラー防止にも繋がります。
まずは簡単な計算から、ぜひあなたの業務でARRAYFORMULA関数の便利さを実感してみてください。
※Googleサービスは、Google LLC の商標であり、この記事はGoogleによって承認されたり、Google と提携したりするものではありません。