GoogleスプレッドシートARRAYFORMULA関数の使い方を解説!(活用例付き)

GoogleスプレッドシートARRAYFOMULA関数の解説記事のアイキャッチ画像です。 基本解説

「Googleスプレッドシートで、毎月同じ数式を何百行もコピー&ペーストしている…」
「関数を入れたら、シートがどんどん重くなってしまった…」
「複数人で管理しているシートの数式が、いつの間にか誰かに消されていて困る…」

このような悩みは、ARRAYFORMULA(アレイフォーミュラ)関数で解決できます。
ARRAYFORMULA関数は、スプレッドシートの反復作業をなくし、
数式管理をシンプルにする強力な機能です。「名前が難しそう」「使い方がわからない」と
敬遠されがちですが、基本さえ押さえれば誰でも活用できます。

本記事では、関数の初心者向けにARRAYFORMULAの基本から実用的な使い方までを分かりやすく解説します。日々の作業を効率化する知識を身につけましょう。

①:ARRAYFORMULA関数とは?

ARRAYFORMULA関数とは、一言でいうと
1つの数式で、複数のセルに計算結果をまとめて出力できる関数」です。

通常、スプレッドシートで計算を行う場合、まず1つのセルに数式を入力し、
それをオートフィル機能(セルの右下の■をドラッグ)で下の行にコピーしていくのが一般的です。

スプレッドシートのD列に、単価と数量を掛ける数式をコピー&ペーストで入力している様子。
基本的な入力方法。D2セルに「=B2*C2」と入力し、フィルハンドルで数式をコピーします。

しかし、この方法にはいくつかの問題があります。

  • 手間がかかる:行が増えるたびに数式をコピーする必要がある。
  • 修正が面倒:数式を修正する際、すべての行を修正し直さなければならない。
  • ミスが起こりやすい:コピー漏れや、一部のセルだけ数式が消えてしまうといったヒューマンエラーが発生しやすい。
  • 動作が重くなる:何千、何万ものセルに数式を入力すると、スプレッドシートのパフォーマンスが低下する場合がある。

ARRAYFORMULA関数は、これらの問題の多くに対応できます。
たった1つのセルにARRAYFORMULA関数を入力するだけで、
指定した範囲すべての計算を自動で行ってくれるのです。

スプレッドシートのD2セルにARRAYFORMULA関数が入力され、D列に計算結果が自動表示されている画面。
ARRAYFORMULA関数なら、1つのセルに数式を入れるだけで指定範囲に結果をまとめて出力できます。

(1)ARRAYFORMULA関数の3つのメリット

  1. 数式管理がシンプルに
    指定した範囲の計算を、たった1つの数式で管理できます。そのため、行が追加されても数式をコピーする手間がなく、修正も元の数式1箇所を直すだけで完了します。
  2. 行の追加・削除に自動で対応
    Googleフォームからの回答が追加されるシートなど、データが自動で増えていく場面で特に便利です。新しい行が追加されると、ARRAYFORMULA関数はそれを検知し、自動で計算を実行してくれます。
  3. シートの動作が軽快になることも
    数千行にわたる数式を個別に計算させるよりも、1つのARRAYFORMULA関数で一括処理する方が、スプレッドシートへの負荷が少なくなり、全体の動作が軽くなる傾向があります。

②:ARRAYFORMULA関数の基本的な使い方

まずは、基本的な構文と使い方をマスターしましょう。

(1)構文

=ARRAYFORMULA(配列数式)

《配列数式》
計算結果が複数のセルになるような数式を指定します。例えば、B2:B10 * C2:C10 のように、
セル範囲を指定した計算式がこれにあたります。

(2)簡単な例 売上管理表

ここでは、商品の「単価」と「数量」から「金額」を計算する
簡単な売上管理表を例に見ていきましょう。

ABCD
1商品名単価数量金額
2商品A1,0005
3商品B2,5003
4商品C80010

従来のやり方

  1. D2セルに =B2*C2 と入力する。
  2. D2セルの右下の■を、D4セルまでドラッグして数式をコピーする。

《ARRAYFORMULA関数を使うやり方》

  1. 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列に表示したい。

ABC
1担当者売上額判定
2佐藤1,500,000
3鈴木800,000
4高橋1,200,000
5

C2セルに、以下の数式を入力します。

=ARRAYFORMULA(
  IF(B2:B="", "",
    IF(B2:B>=1000000, "達成", "未達成")
  )
)
スプレッドシートのC列に、ARRAYFORMULAとIF関数を使い「達成」「未達成」が自動表示されている様子。5行目は空欄。
IF関数を組み合わせると、条件に応じた文字列を表示できます。入力がない行は空欄のまま処理されます。

数式の解説
この数式は、2つのIF関数が入れ子(ネスト)になっています。

  • 外側のIF関数:IF(B2:B=””, “”, …)
  • もし、B列のセルが空白(””)だったら、空白(””)を表示する
    そうでなければ、内側のIF関数を実行する。
  • この処理により、売上額が未入力の行(5行目以降)に「未達成」と表示されてしまうのを防ぎます。この方法はARRAYFORMULA関数とセットでよく使われるため、覚えておくと便利です。
  • 内側のIF関数:IF(B2:B>=1000000, “達成”, “未達成”)
  • もし、B列のセルの値が1,000,000以上だったら、「達成」と表示する。
    そうでなければ、「未達成」と表示する。

(2)VLOOKUP関数との組み合わせ

シーン
「売上実績シート」の商品IDをキーにして、
「商品マスタシート」から商品名と単価を自動で取得したい。

シート構成

売上実績シート

ABCDE
1日付商品ID商品名数量売上
27/1S-001高性能マウス515,000
37/1S-00324インチモニター10250,000
47/2S-002静音キーボード315,000

商品マスタシート

こちらが参照元のデータです。

ABC
1商品ID商品名単価
2S-001高性能マウス3,000
3S-002静音キーボード5,000
4S-00324インチモニター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で囲んでも、
結果が配列として自動展開されません。しかし、計算の条件となる引数に
単一セルではなくセル範囲を指定することで、配列処理が可能になります。

シート構成

担当者別集計シート

AB
1担当者合計売上
2佐藤170,000
3鈴木95,000
4高橋80,000

売上明細シート

こちらが参照元のデータです。

ABC
1日付担当者売上金額
27/1佐藤50,000
37/1鈴木30,000
47/2佐藤120,000
57/3高橋80,000
67/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! というエラーが発生します。

ARRAYFORMULAの出力範囲内に手入力したため、数式元のセルに#REF!エラーが表示されたスプレッドシート。
ARRAYFORMULAの出力先に値があると「#REF!」エラーが発生します。原因となるセルを空にすれば解消します。

これは「数式の結果を展開したいのに、出力先のセルにすでにデータがあるため展開できない」というエラーです。数式の結果が出力される範囲(下の行や右の列)に、文字や別の数式が入っていないか確認し、削除してください。

(2)一部の関数は直接使えない(要工夫)

記事中で紹介したSUMIFのように、一部の関数はそのままではARRAYFORMULAに対応していません。(例: COUNTIF, SUMIFS, COUNTIFSなど)

これらの関数を使いたい場合は、今回のように引数を工夫したり、
QUERY関数やFILTER関数といった、より高度な関数で代替する必要があります。

⑥まとめ

今回は、スプレッドシートの作業効率化に役立つARRAYFORMULA関数について解説しました。

最後に、重要なポイントを振り返りましょう。

  • 基本は ARRAYFORMULA(計算したい範囲の式)
  • 数式の管理は、1つのセルでシンプルになる
  • 行が追加されても自動で計算が適用される
  • 空白行を無視するために IF(範囲=””, “”, …) の組み合わせが有効
  • VLOOKUPやSUMIFなど、多くの関数と組み合わせ可能
  • エラーが出たら「出力範囲のデータ」をまず確認する
  • 安全な運用のために、数式は1行目に設置するのがおすすめ


ARRAYFORMULA関数を使いこなせば、手作業での数式コピー&ペーストから解放され、
より本質的な業務に集中できます。数式管理もシンプルになるため、
複数人での共同編集におけるヒューマンエラー防止にも繋がります。

まずは簡単な計算から、ぜひあなたの業務でARRAYFORMULA関数の便利さを実感してみてください。

※Googleサービスは、Google LLC の商標であり、この記事はGoogleによって承認されたり、Google と提携したりするものではありません。