ArrayFormulaアレイフォーミュラってなに?

ArrayFormulaは「複数のセルに対して、一括で処理を行える」スプレッドシートの非常に強力な関数です。
通常の関数では1セルずつ関数をコピーして使いますが、ArrayFormulaを使えば複数行にまたがる処理を一気に適用できます。

=ArrayFormula(A2:A * 2)

このように書くだけで、A2以降の値すべてに2倍の計算が一括で適用されます。
そのため

  • 最終行がどこになるかわからない場合
  • これから行方向に入力していく

場合、毎回数式をコピーするもしくは入力されるであろう箇所まであらかじめ数式をコピーしておく必要がありません。

ArrayFormulaの基本形

単純な数値処理を一括で行う

=ArrayFormula(A2:A + B2:B)

→ A列とB列の対応するセルを足し算し、結果を一括で表示します。

IF関数との組み合わせで条件分岐も可能

=ArrayFormula(IF(A2:A > 100, "合格", "不合格"))

→ A列の値が100より大きければ「合格」、そうでなければ「不合格」を表示します。

ArrayFormulaの入力ショートカット

実は、ArrayFormulaは毎回手打ちしなくても、例えば上記の数式だと

IF(A2:A > 100, "合格", "不合格")

まで入力した状態で

  • Windows:Ctrl + Shift + Enter
  • Mac:Command + Shift + Enter

で簡単に適用が可能です!

実用テクニック:配列と他関数を組み合わせる

SPLIT・FLATTENと組み合わせて文字列を分解

=ArrayFormula(SPLIT(FLATTEN(SPLIT(A2:A4, ",")), ","))

→ 複数行・カンマ区切りの文字列をすべて分解して1列にまとめられます。
リストデータの整形に便利です。

FLATTEN関数についてはこちらの記事をご覧ください。

TEXT・DATE関数と併用して日付を一括フォーマット

=ArrayFormula(TEXT(A2:A, "yyyy/mm/dd"))

→ A列の日付をすべて「yyyy/mm/dd」形式に変換して表示。

注意点とトラブル対策

例えば

  • 行数が多すぎるとパフォーマンスが低下
  • 数式が「配列出力」になるため、途中にデータを入れると上書きされる
  • 絶対参照($)の扱いに注意(列や行のズレに注意)

まとめ|ArrayFormulaを使えば手間を減らしてミスも防げる

まとめ

  • 配列のように一括処理できる
  • IFやTEXTなどの他関数との相性も抜群
  • 複雑な処理もシンプルに記述可能

→ 一度覚えておけば、毎日の業務や作業を強力にサポートしてくれる関数です。


この記事を書いた人

今村 壱生(IMAMURA Issei)詳細はこちら
29歳のエンジニア兼マーケター。Re PROViSTAとして、生成AI、Webアプリ開発、業務自動化、BI導入、Web広告運用など、幅広い分野で活動中。システム構築では、要件定義から設計・実装・運用まで一貫して対応。また、小説執筆も手がけるなど、クリエイティブな一面も持つ。


FLATTEN関数とは?知られざる便利関数

FLATTEN関数は、スプレッドシートの中でも比較的新しい・そしてあまり知られていない関数のひとつです。
複数行・複数列のデータを縦1列に圧縮して展開することができます。これにより、複雑な構造のデータを1次元のリストとして扱えるようになります。

FLATTENの基本的な使い方

Googleスプレッドシートの FLATTEN() 関数は、複数のセル範囲に含まれるデータを1列に変換してくれる便利な関数です。
行や列の形に関係なく、一つの縦長リストに整形できます。

=FLATTEN(A1:C3)

と書けば、A1~C3のすべての値を縦に並べたリストが取得できます。

ご覧のように、基本的には行列の「行」が優先して表示されます。
1→2→3→4…の順番。

列を優先したい場合、取得する複数行列リストにTRANSPOSE関数を加えると実現できます。

=FLATTEN(TRANSPOSE(A1:C3))

1→4→7→2…の順番。

なぜ複数行のデータ処理に便利なのか?

複数セルに分かれたデータを一括で扱いたいとき、手動でコピペしていては効率が悪いです。
また、他の関数たちを組み合わせる必要があるため複雑になりがちです。
FLATTENを使えば、行・列の形を気にせずに一つの「リスト」として集約でき、後工程の UNIQUEFILTER と組み合わせやすくなります。

「後処理が楽になる」というのがめちゃくちゃ大切!

使用例:複数行セルをリスト化する方法

想定する入力データ

例えば以下のような形式で、複数のセルにカンマ区切りの文字列が含まれているとします。

A列
apple,banana
banana,orange
grape,apple

使用する数式の全体像

このようなデータを一括でリスト化するには、次のような式を使います。

=ArrayFormula(SPLIT(FLATTEN(SPLIT(A1:A3, ",")), ","))

ArrayFormula関数についてはこちらの記事をご覧ください。

各関数の組み合わせの意味と解説

内容
SPLIT(A1:A3, ",")各セル内のカンマ区切りの要素をバラす
FLATTEN(…)バラした要素を縦一列に並べる
SPLIT(…, ",")さらに分割された文字列を整理
ArrayFormula(…)配列関数を一括で適用

分解して考えていくと、意外と簡単ですね!

実用例:タグ一覧や選択肢のマスター整理に応用

マーケティングやアンケートデータの整形

例えばアンケートで「好きな果物」を複数選択肢で受け取った場合、FLATTENを活用すると、全回答を1つのリストに整形しやすくなります。さらに UNIQUE 関数と組み合わせれば、集計・分析にそのまま使えるマスター一覧の完成です。

フィルタリングや重複削除にも有効

=UNIQUE(ArrayFormula(SPLIT(FLATTEN(SPLIT(A1:A10, ",")), ",")))

このような式を使えば、重複なしの一覧を簡単に取得可能。社内マスタの統一・整備やデータクリーニングにも活用できます。

注意点とよくあるミス

空白セルが混ざるとどうなる?

空白セルを含む場合、FLATTEN によって空欄の要素も出力される可能性があります。必要に応じて FILTERIF を組み合わせ、空欄を除外するのがおすすめです。

筆者がよくやる処理は以下です。
FLATTENで1列のリストを取得→そのリストに対してFILTER関数で「空白を除く」処理をする。

=FILTER(FLATTEN(A1:C3),FLATTEN(A1:C3)<>"")

5が抜けている表

セルが多すぎると処理が重くなる?

大量のデータを扱う場合、FLATTEN を含む配列式はやや動作が遅くなることがあります。
その際は列数・範囲を絞る、あるいは QUERY 関数などへの切り替えを検討してください。

まとめ:FLATTENは地味だけど超便利な裏技関数

まとめ

  • 複数行・複数列のデータを1列にまとめたいとき、FLATTENは抜群の効果
  • 特に SPLITUNIQUEArrayFormula との組み合わせが鉄板
  • 一見地味でも、実務で役立つシーンが非常に多い

この1式を知っておくだけで、毎回フィルタや関数を何段階も組む必要がなくなります。
地味ですが超便利な数式なので、「使いどころ」をぜひ意識して活用してみてください。


この記事を書いた人

今村 壱生(IMAMURA Issei)詳細はこちら
29歳のエンジニア兼マーケター。Re PROViSTAとして、生成AI、Webアプリ開発、業務自動化、BI導入、Web広告運用など、幅広い分野で活動中。システム構築では、要件定義から設計・実装・運用まで一貫して対応。また、小説執筆も手がけるなど、クリエイティブな一面も持つ。