GoogleスプレッドシートのARRAYFORMULAを使えば、1つの数式を書くだけで列全体に自動展開できます。コピー作業ゼロで請求・集計・条件分岐まで対応でき、この記事では実務5パターンを解説します。

目次

この記事でわかること

1つの数式で列全体を自動展開する基本構文(3分で習得可能)、IF・IFERRORと組み合わせた空白・エラー処理の完全パターン、請求・経費・ステータス管理シートに即日適用できる実務5ハック。

この記事の結論

ARRAYFORMULAの核心は「1つの数式で複数行を同時に処理する」点にあります。B2:Bのような列全体の範囲参照と組み合わせることで、行が増えても式を追加する手間がなくなります。フリーランスの請求・見積・集計シートに導入すれば、毎回のコピー作業を完全になくせます。

今日やるべき1つ

使用中のGoogleスプレッドシートを開き、空き列のA2セルに=ARRAYFORMULA(ROW(A2:A10)-1)と入力して自動展開を体験する(3分)。

状況別ショートカット

状況読むべきセクション所要時間
基本構文をまず理解したいARRAYFORMULAは1行で列全体に展開3分
IF関数と組み合わせたいARRAYFORMULAとIFで条件一括処理5分
空白行のエラーを消したい空白・エラー処理は2関数で解決4分
自分の用途に合うか判断したいARRAYFORMULAの用途を3分で診断3分
請求・集計シートに使いたいARRAYFORMULAは5つの仕組みで実務効率化7分

ARRAYFORMULAは1行で列全体に展開

ARRAYFORMULAを初めて見たとき、構文が難しそうに見えるのは誰にでもあります。実際には1行で書け、書き方のルールは3点だけです。

構文は=ARRAYFORMULA(配列数式)の1パターン

ARRAYFORMULAの基本構文は=ARRAYFORMULA(配列数式)です(Google ドキュメント エディタ ヘルプ)。カッコの中に「配列数式」を書くだけで、結果が複数の行や列に自動展開されます。

たとえばA2セルに=ARRAYFORMULA(1+1)と入力すると結果は1セルにとどまりますが、=ARRAYFORMULA(B2:B6 – C2:C6)と入力すると、B2からB6とC2からC6の差分が5行分まとめて表示されます。「配列数式」とは、範囲同士や範囲と定数の演算を指定する式のことで、その結果を複数セルに出力するのがARRAYFORMULAの役割です。Googleスプレッドシート初心者ガイドでは、このような配列操作の基礎から実務応用まで解説しています。

ショートカット入力でCtrl+Shift+Enterを活用

ARRAYFORMULAは手入力のほか、ショートカットでも入力できます。セルに数式を書いた後、Enterの代わりにCtrl+Shift+Enter(Mac: Command+Shift+Enter)を押すと、自動でARRAYFORMULA(が数式の前に追加されます(Google ドキュメント エディタ ヘルプ)。

「1つの数式で複数のセル範囲の計算を一度に行う」という使い方がわかると、ショートカット入力の便利さが実感できます(配列数式の実例と使い方メモ)。数式を書いてからCtrl+Shift+Enterを押す手順を1度体験すると、以降は迷わずに入力できるようになります。

B2:Bの範囲参照で行追加に自動対応

ARRAYFORMULAを列全体に展開するには、B2:Bのような「列末尾を省略した範囲参照」を使います。B2:B6と書くと6行目までに固定されますが、B2:Bと書くとシートに行を追加しても自動で展開範囲が広がります。フリーランスの請求書管理や経費記録のように、月ごとに行数が変わるシートではB2:Bの形式が実務的な選択です。

CHECK

▶ 今すぐやること: Googleスプレッドシートの空き列B2セルに=ARRAYFORMULA(1*ROW(B2:B6))と入力し、B2からB6に連番が展開されるか確認する(3分)

Q: ARRAYFORMULAはExcelでも使えますか?

A: Excelには同名の関数は存在しません。ARRAYFORMULAはGoogleスプレッドシート固有の関数です。Excelで同様の処理をする場合は、Ctrl+Shift+Enterで入力する配列数式か、Excel 365のスピル機能を使います。

Q: ARRAYFORMULAと通常のオートフィルはどう違いますか?

A: オートフィルは各セルに独立した数式をコピーしますが、ARRAYFORMULAは1つの数式が複数セルに展開されます。式を修正するときはARRAYFORMULAの入力セル1か所だけ直せばよいため、管理コストが下がります。

ARRAYFORMULAとIFで条件一括処理

ARRAYFORMULAとIFを組み合わせると、条件分岐を列全体に一度で適用できます。IFの書き方に慣れている方なら、構文の追加は最小限です。

IF関数を列全体へ一括展開する書き方

通常のIF関数を1つのセルに書いた場合、そのセルにしか結果が表示されません。ARRAYFORMULAと組み合わせると、条件式の範囲参照が1行ずつ評価され、結果が全行に展開されます。

書き方は=ARRAYFORMULA(IF(A2:A=”完了”,”済”,”未”))のように、IF関数の条件・真の値・偽の値すべてに範囲参照を使います。A列に「完了」と入力されている行には「済」、それ以外の行には「未」が自動で表示されます。フリーランスのタスク管理シートやステータス管理表で、ステータス列を自動更新する用途に直接使えます。

空欄行に不要な値を表示させない条件の書き方

B2:Bのような無限範囲をIF内で使うと、データのない行にも「未」などの値が表示されます。これを防ぐには、A2:A<>””のような空欄チェックを条件の先頭に加えます。

書き方は=ARRAYFORMULA(IF(A2:A=””,””,IF(A2:A=”完了”,”済”,”未”)))です。最初のIF条件でA列が空欄なら空白文字を返し、空欄でない場合だけ内側のIF判定を行います。この構造を覚えると、ARRAYFORMULAで無限範囲を使う際の標準パターンとして使い回せます。

数値計算と文字列結合をIFで切り替える

ARRAYFORMULAはIF内の処理が数値計算でも文字列結合でも動作します。たとえば=ARRAYFORMULA(IF(B2:B>0,B2:B*1.1,”対象外”))と書くと、B列に正の数値があれば1.1倍の数値を、そうでなければ「対象外」の文字を返します。請求書の消費税計算や、金額が入力された行だけ計算したい場合に使えます。

一方で、IFの真の値と偽の値のデータ型(数値と文字列)を混在させると、後続の集計関数でエラーになる場合があります。SUM関数など数値集計を続ける列では、偽の値を“”ではなく0にしておくのが安全です。

CHECK

▶ 今すぐやること: スプレッドシートのA2:A10に任意のテキストを入力し、B2に=ARRAYFORMULA(IF(A2:A=””,””,A2:A&”_済”))と入力して文字列結合の自動展開を確認する(5分)

Q: ARRAYFORMULAのIF内でANDやORは使えますか?

A: 通常のAND・OR関数はARRAYFORMULA内で正しく動作しません。複数条件を使うには(A2:A=”完了”)*(B2:B>0)のように条件を乗算(AND相当)または(A2:A=”完了”)+(B2:B>0)で加算(OR相当)する方法を使います。

Q: IF内の範囲のサイズが合わないとどうなりますか?

A: 範囲のサイズが一致しない場合、#VALUE!エラーが表示されます。条件・真の値・偽の値の範囲はすべて同じ行数・列数にそろえてください。

空白・エラー処理は2関数で解決

ARRAYFORMULAを使い始めると、空白行に0やエラーが表示されて困る場面が出てきます。IFとIFERRORの2つを組み合わせるだけで解決できます。

空欄行への0や文字表示を防ぐIF空欄チェック

ARRAYFORMULAでB2:B*C2:Cのような数値計算を書くと、BやC列が空欄の行に0が表示されます。見た目が煩雑になるだけでなく、合計集計に0が混入する点も問題です。

解決策は=ARRAYFORMULA(IF(B2:B=””,””,B2:B*C2:C))のように、計算の前にIF空欄チェックを加えることです。B列が空欄なら空文字を返し、入力がある行だけ計算します。この1パターンを覚えておくと、ARRAYFORMULAで無限範囲を使うシートの大半に応用できます。

IFERRORで計算エラーを非表示にする

数値計算でゼロ除算が起きたり、参照先が不正な値だったりすると#DIV/0!#VALUE!が表示されます。IFERRORをARRAYFORMULA内に加えると、エラーが発生したセルだけ指定の値(空文字や0)を表示できます。

書き方は=ARRAYFORMULA(IFERROR(B2:B/C2:C,””))です。C列が0または空欄の行でゼロ除算エラーが発生しても、該当セルは空欄で表示されます。IFとIFERRORを組み合わせた完全形は=ARRAYFORMULA(IF(B2:B=””,””,IFERROR(B2:B/C2:C,””)))で、空欄チェックとエラー処理の両方をカバーします。消費税の端数処理など請求書計算でも、このパターンが活躍します。

同じサイズの範囲参照が展開の前提条件

ARRAYFORMULAで複数の範囲を使う計算式では、すべての範囲の行数と列数が一致している必要があります(ARRAYFORMULAの応用的な考え方)。たとえばB2:B6C2:Cを組み合わせると、サイズ不一致でエラーになります。無限範囲を使う場合はすべての参照をB2:BC2:Cに統一し、固定範囲を使う場合は行数をそろえます。

「同じ計算をたくさんのデータに適用したいときに非常に便利」と感じるスプレッドシートユーザーは多く(スプレッドシート初心者向けの体験談・解説)、その便利さを最大限に引き出すには、範囲サイズの統一が前提条件になります。

CHECK

▶ 今すぐやること: B2:B10に数値を入力し、C2に=ARRAYFORMULA(IF(B2:B=””,””,B2:B*1.1))と入力して空欄行に値が表示されないことを確認する(4分)

Q: ARRAYFORMULAの展開先セルに手動で値を入力するとどうなりますか?

A: ARRAYFORMULAが展開するセル(A3以降など)に手動で値を入力しようとすると、「配列が複数セルを拡張するため、変更できません」というエラーが表示されます。展開先セルは編集できない仕様のため、データを手動入力するセルと展開先セルを列で分けて設計してください。

Q: ARRAYFORMULA内でIFとIFERRORはどちらを外側にすべきですか?

A: IFを外側にして空欄チェックを先に行い、値がある行だけIFERRORの計算を行う順序が安全です。IFERRORを外側にするとエラーだけでなく、意図しない空欄処理まで隠れる場合があります。

ARRAYFORMULAの用途を3分で診断

自分のシートにARRAYFORMULAを使うべきかどうか、3つの質問で判断できます。

Q1: 同じ計算式を複数行に適用したいですか?

Yesの場合はQ2へ進んでください。Noの場合はARRAYFORMULAより単一セルの通常の数式が適切です。

Q2: 行が今後も追加される予定はありますか?

Yesの場合はQ3へ進んでください。Noの場合、固定行数なら通常のオートフィルで十分対応できます。ARRAYFORMULAは行追加が続くシートで真価を発揮します。

Q3: 数式の管理を1か所に集約したいですか?

Yesの場合はResult A(ARRAYFORMULAの導入が適切)、Noの場合はResult B(オートフィルとの併用が現実的)に進んでください。

Result A: ARRAYFORMULAを導入する

請求金額の自動計算・ステータスの自動判定・経費の集計など、行が増えるたびに数式をコピーしている作業に適用してください。最初の1式をヘッダー直下のセル(A2など)に置き、範囲をA2:A形式にすることで、行追加後も自動展開されます。売掛金管理をExcelで自動化する場合も、同様のアプローチが有効です。

Result B: オートフィルを継続する

行数が固定されていて今後変更の予定がない場合や、各行に異なる計算ロジックが必要な場合は、オートフィルが管理しやすいです。ARRAYFORMULAへの移行は、「同じ式を繰り返しコピーしている」と感じた時点で検討してください。

CHECK

▶ 今すぐやること: 現在管理しているスプレッドシートを開き、同じ数式が3行以上コピーされている列を1つ探す。その列のヘッダー直下セルに=ARRAYFORMULA()の骨格を書き、範囲参照を入力してみる(3分)

Q: ARRAYFORMULAとQUERY関数はどう使い分けますか?

A: ARRAYFORMULAは既存の数式を複数行に展開するための関数です。QUERY関数はSQL的な条件でデータを抽出・集計するための関数で、役割が異なります。集計・絞り込みにはQUERY、計算式の一括展開にはARRAYFORMULAが適しています。両者を組み合わせることも可能です。

Q: ARRAYFORMULAはどのくらいの行数まで実用的に使えますか?

A: 数千行程度であれば実務上の問題は少ないです。数万行を超える場合はシートの再計算に時間がかかる場合があります。大量データには、ARRAYFORMULAよりGoogleスプレッドシートのデータ接続機能やQUERY関数による事前集計を検討してください。

ARRAYFORMULAは5つの仕組みで実務効率化

ARRAYFORMULAの実務活用は、「何となく使える」から「繰り返し作業をゼロにする設計」まで段階があります。以下の5つのハックは、フリーランスの請求・見積・集計シートで即日適用できるものを選んでいます。

ハック1: 請求金額を1式で自動計算し修正コストを削減

【対象】: 請求書シートで単価×数量の計算式を毎月手動コピーしているフリーランス

【手順】: まず単価列(B列)と数量列(C列)のヘッダーを確認し、データが始まる行番号(例: 2行目)を特定します(1分)。次に、金額列(D列)のD2セルを選択し、=ARRAYFORMULA(IF(B2:B=””,””,B2:B*C2:C))と入力します(2分)。最後に、請求データを3行以上追加して、D列に金額が自動展開されることを確認します(2分)。

【コツと理由】: 「毎月1列コピーするだけだから手間ではない」と感じていても、「コピーのし忘れ」「コピー範囲のズレ」「別シートへの転記ミス」が積み重なると、確認作業が発生します。ARRAYFORMULAで1式に集約すると、修正が必要な場合もD2セルだけ直せばよいため、式の管理コストが1か所に集約されます。空欄チェックのIFを外側に置く構造にすることで、データのない行への誤表示も防げます。

【注意点】: D列の展開先セル(D3以降)に手動で値を入力する必要はありません。手動入力しようとするとエラーになるため、金額列は全行ARRAYFORMULAに任せる設計にしてください。

ハック2: ステータス列を条件IFで自動判定し入力工数をゼロにする

【対象】: 案件進捗表や請求ステータス表で、毎回「済」「未」を手動入力しているフリーランス

【手順】: 判定の基準となる列(例: 入金日列・E列)を決め、値が入力されているかを確認します(1分)。ステータス列(F列)のF2セルに=ARRAYFORMULA(IF(E2:E=””,”未入金”,”入金済”))と入力します(2分)。E列に入金日を入力すると、F列のステータスが自動で切り替わることを確認します(2分)。

【コツと理由】: ステータス列を手動で管理すると、入力し忘れや表記ゆれ(「済」「完了」「done」など)が発生し、後からのフィルタリングで集計ミスの原因になります。ARRAYFORMULAとIFを組み合わせることで、E列に値が入った瞬間にF列が確定するため、表記ゆれがゼロになります。判定ロジックはF2の1か所だけに存在するため、条件変更も1箇所の修正で全行に反映されます。

【注意点】: 複数の条件で分岐させたい場合(「入金済」「一部入金」「未入金」など)は、IF内をネストするかIFS関数をARRAYFORMULA内で使います。ただしIFSとARRAYFORMULAの組み合わせはGoogleスプレッドシートのバージョンによって動作が異なる場合があるため、事前に1行で動作確認してから全体に適用してください。

ハック3: 経費表の消費税列を1式で計算し転記ミスをなくす

【対象】: 経費表で消費税額や税込金額を手計算・手入力しているフリーランス

【手順】: 経費金額列(B列)のB2:Bに金額が入力されている状態を確認します(1分)。消費税額列(C列)のC2セルに=ARRAYFORMULA(IF(B2:B=””,””,IFERROR(B2:B*0.1,0)))と入力します(2分)。B列に金額を追加するたびにC列に消費税額が自動表示されることを確認します(1分)。

【コツと理由】: 実務では金額列に文字や空欄が混入したときに#VALUE!エラーが発生し、IFERRORなしだと1行のエラーが集計全体に影響します。IFで空欄チェック、IFERRORで計算エラーをそれぞれ処理する二重防護の構造にすることで、シートの堅牢性が上がります。消費税率を変更する際は0.1の部分だけを修正すれば全行に反映されるため、税率改正時の対応も1か所で完了します。

【注意点】: 消費税の端数処理(切り捨て・四捨五入)が必要な場合は、IFERROR(ROUNDDOWN(B2:B*0.1,0),0)のようにROUNDDOWNをIFERROR内で使います。ARRAYFORMULAで計算した消費税額を請求書の正式な税額欄に使用する際は、端数処理の要否を確認したうえで適用してください。

ハック4: 中間計算列を削除してシートをスリム化

【対象】: 「合計列」「税込列」「差引列」など中間計算のための列が増えてシートが煩雑になっているフリーランス

【手順】: 現在の中間計算列を確認し、最終的に必要な値(例: 税込合計)を特定します(2分)。中間列の計算式を1つのARRAYFORMULAにまとめます。たとえば単価×数量×1.1は=ARRAYFORMULA(IF(B2:B=””,””,B2:B*C2:C*1.1))で1列にまとめられます(3分)。不要になった中間計算列を非表示または削除します(2分)。

【コツと理由】: 中間列を増やして管理する方法は、後から列を挿入したときに参照先が壊れるトラブルが発生することがあります。ARRAYFORMULAで計算を1式に集約すると、参照する列が1つに減り、列挿入や削除によるズレのリスクが構造的に下がります。ただし1式が長くなりすぎると可読性が低下するため、計算ステップが3段階を超える場合は分けることを検討してください。

【注意点】: 中間列を削除する前に、その列を参照している他の数式がないかを確認してください。他のシートや集計式から参照されている列を削除すると、連鎖的なエラーが発生します。削除より先に「非表示」で様子を見ることをお勧めします。

ハック5: 連番列を1式で自動生成し行追加の手間をゼロにする

【対象】: 請求書や明細表で、行を追加するたびに連番を手動で入力・コピーしているフリーランス

【手順】: 連番を表示したい列(A列など)のA2セルを選択します(30秒)。=ARRAYFORMULA(IF(B2:B=””,””,ROW(B2:B)-1))と入力します(1分)。B列にデータを追加するたびにA列の連番が自動で増えることを確認します(1分)。

【コツと理由】: 行の挿入・削除が発生すると連番がずれて手動修正が必要になります。ROW関数はセルの行番号を返す関数で、ARRAYFORMULAと組み合わせると「データがある行だけ連番を振る」動作を1式で実現できます。ROW(B2:B)-1-1はヘッダー行分の調整で、ヘッダーが何行あるかに応じて数値を変えます。請求書番号の管理ルールと組み合わせることで、インボイス対応の番号管理も自動化できます。

【注意点】: ROW関数で生成した連番は、行を並べ替えると番号が変わらず位置に追随します。並べ替え後に連番を維持したい場合は、ARRAYFORMULAの連番列は使わずに、並べ替えの基準列を別途設けてください。

CHECK

▶ 今すぐやること: 請求・経費・案件管理のいずれかのシートを開き、同じ計算式が複数行にコピーされている列を特定して、ハック1の手順でARRAYFORMULAに置き換える(7分)

Q: ARRAYFORMULAとSUM・AVERAGEなどの集計関数は組み合わせられますか?

A: SUMやAVERAGEは単一の値を返す関数のため、ARRAYFORMULAと組み合わせても複数セルへの展開はできません。列ごとの集計にはSUMIF・AVERAGEIFをARRAYFORMULAと組み合わせる方法があります。行ごとの集計(各行の合計など)はARRAYFORMULAが得意な処理です。

Q: ARRAYFORMULAで日付関数(TODAY・NOW)は使えますか?

A: TODAY・NOWは1つの値を返す関数のため、ARRAYFORMULAと組み合わせても展開はされません。日付の計算(例: 締め日から〇日後)はARRAYFORMULA内で日付演算の形で書けます。たとえば=ARRAYFORMULA(IF(A2:A=””,””,A2:A+30))でA列の日付に30日を加算した列を作れます。

ARRAYFORMULAを使いこなす:1式で列全体を自動展開

ARRAYFORMULAの本質は「1つの数式を書けば、行が何行増えても対応が不要になる」という自動化の仕組みです。基本構文の=ARRAYFORMULA(配列数式)に、B2:B形式の無限範囲参照と空欄チェックのIFを組み合わせると、フリーランスの請求・経費・ステータス管理の大半の繰り返し作業に対応できます。

ARRAYFORMULAを1つのシートに導入すると、そのシートでの数式メンテナンスが1か所に集約されます。最初は基本の加減算から始め、次にIF条件・空欄処理・IFERRORへと段階的に広げると、挫折なく使いこなせるようになります。「請求金額の自動計算」から始めたことで、以降の応用パターンが自然に身につくという順序が、実際の習得コストを最も下げます。Excelとスプレッドシートの違いを理解した上でツールを選定することも、業務効率化の重要な一歩です。

状況次の一歩所要時間
まだ使ったことがない空き列A2に=ARRAYFORMULA(ROW(A2:A10)-1)を入力して動作確認3分
基本は理解したがIFと組み合わせたい案件ステータス列にハック2の式を適用5分
既存シートを一括でARRAYFORMULAに移行したいコピー式が3行以上ある列を1列選び、ハック1の手順で置き換え7分

ARRAYFORMULA 使い方に関するよくある質問

Q: ARRAYFORMULAを入れたセルを削除するとどうなりますか?

A: ARRAYFORMULAを入力したセル(例: A2)を削除すると、そのセルから展開されていたすべての値が同時に消えます。誤削除を防ぐために、ARRAYFORMULAを入力したセルを保護設定(右クリックでセルを保護)しておくことをお勧めします。

Q: ARRAYFORMULAで文字列の結合はできますか?

A: できます。=ARRAYFORMULA(IF(A2:A=””,””,A2:A&” “&B2:B))のように、&演算子で文字列をつなぐ式をARRAYFORMULA内に書けます。姓と名を結合した氏名列や、コードと名称を結合した識別子列の自動生成に使えます。

Q: 他のシートのデータをARRAYFORMULAで参照できますか?

A: できます。=ARRAYFORMULA(Sheet2!B2:B*1.1)のように、シート名を指定した範囲参照をARRAYFORMULAの引数に使えます。ただし参照先のシートが非常に大きい場合は再計算に時間がかかるため、参照範囲を必要最小限にとどめることをお勧めします。

【出典・参照元】

Google ドキュメント エディタ ヘルプ – ARRAYFORMULA

スプレッドシート初心者向けの体験談・解説

配列数式の実例と使い方メモ

ARRAYFORMULAの応用的な考え方