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広告運用など、幅広い分野で活動中。システム構築では、要件定義から設計・実装・運用まで一貫して対応。また、小説執筆も手がけるなど、クリエイティブな一面も持つ。


=JOIN("<BR>", UNIQUE(TRANSPOSE(SPLIT(A1, "<BR>"))))

この数式・関数で何ができるのか?

内容

スプレッドシートのセルに <BR> 区切りで複数の文字列が入っている場合、通常そのままでは重複ちょうふくや整形の問題が起こります。
この数式は、以下の処理を1行で完結します。

流れ

  • <BR> で区切られている文字列(重複あり)のセルに対して
  • 再び <BR> 区切りで1つのセルにまとめ直す
  • <BR> で区切って分解
  • 重複の削除(ユニーク化)
数式の実用例

上記では、<BR>区切りの文字列で「バナナ」が重複していますが、数式を適用した結果のセルでは🍌の出現回数が1回になっており、重複を削除できています。

用途例

  • アンケートなどで複数選択されたタグの整理
  • コピー&ペーストされた箇条書きデータの正規化
  • 表示用の整形(HTML出力や他ツール連携)

数式の仕組みを分解して理解しよう

=JOIN("<BR>", UNIQUE(TRANSPOSE(SPLIT(A1, "<BR>"))))

ステップ解説

関数役割
SPLIT(A1, "<BR>")セルA1の文字列を<BR>で分割し、配列として返す
TRANSPOSE(…)縦方向に展開(JOINの都合)
UNIQUE(…)重複を削除し、ユニークな値だけを抽出
JOIN("<BR>", …)<BR> で再び連結し、1つのセルに整形出力

関数を一つずつ見ていくと、難しいことは一つもありません。

よくある応用パターンとTips

改行コード(CHAR(10))での整形

HTMLタグではなく表示上の改行をしたい場合。

重要

CHAR(10)」というのはCHARキャラクタ関数といって、スプレッドシート・Excelの引数ひきすう(文字コード)10番は「改行」を意味します。
めちゃくちゃ使います!

=JOIN(CHAR(10),UNIQUE(TRANSPOSE(SPLIT(A1,"<BR>"))))

カンマ区切り対応

CSVやタグ処理に便利。

=JOIN(",", UNIQUE(TRANSPOSE(SPLIT(A1, ","))))

トリムを加えて余分なスペースを除去

=JOIN("<BR>", UNIQUE(TRANSPOSE(ArrayFormula(TRIM(SPLIT(A1, "<BR>"))))))

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

よくあるエラーと対処法

問題解決方法
結果が1行で改行されないセルの書式設定で「折り返して全体を表示」を有効にする
値が反映されない入力値に <BR> が入っていない or 全角・半角ミスがある
重複が除去されないスペース付きなど「見た目が同じで違う」ケースがある。TRIM()で対処可

まとめ:知っていると作業効率が段違い!

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


この記事を書いた人

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