Googleスプレッドシートで、1つのセルに「商品A,商品B,商品C」といった複数の商品名が入っているケース、よくありますよね。
このようなデータを1商品ずつ一覧にしたいと思ったことはありませんか?
たとえば、以下のような売上データがあったとします。
注文ID | 商品一覧 |
---|---|
001 | りんご,みかん |
002 | バナナ,ぶどう |
003 | もも |
この「商品一覧」を1つ1つバラして、以下のように一覧にしたい、というのが今回のゴールです。
商品一覧 |
---|
りんご |
みかん |
バナナ |
ぶどう |
もも |
使用する関数:SPLIT関数とFLATTEN関数
このような変換を手作業で行うのは大変ですが、Googleスプレッドシートでは、
SPLIT関数
:文字列を指定した区切り文字で分割するFLATTEN関数
:複数列・配列を1列にまとめる
この2つを組み合わせることで、簡単に変換できます。
ステップ①:まずはSPLIT関数で分割
次のような式を使えば、1セルの中でカンマ区切りになっている文字列を、横方向に展開できます。
=SPLIT(B2, ",")
たとえば B2
に「りんご,みかん」が入っていれば、次のように表示されます。

ステップ②:SPLIT関数を複数行に適用する
複数行にまたがって使いたい場合は、ARRAYFORMULA
と組み合わせて次のようにします。
=ARRAYFORMULA(SPLIT(B2:B4, ","))
ただし、この状態だと「行単位で横に展開」されるだけで、一覧化(縦1列)にはなりません。

ステップ③:FLATTEN関数で1列にまとめる
ここで FLATTEN
の出番です。先ほどの SPLIT
の結果を FLATTEN
に渡すことで、以下のように縦1列に変換できます。
=ARRAYFORMULA(FLATTEN(SPLIT(B2:B4, ",")))
結果はこちら👇

応用①:改行で区切られたデータも対応可能
たとえば、次のように改行で区切られている場合もあります。

この場合は、区切り文字に CHAR(10)
(改行コード)を指定することで分割できます。
=FLATTEN(SPLIT(A2, CHAR(10)))

応用②:重複を除きたい場合
同じ商品が複数回出てくる場合、重複を取り除くには UNIQUE
関数を使います。
=UNIQUE(ARRAYFORMULA(FLATTEN(SPLIT(B2:B4, ","))))

注意点
SPLIT
は空白も一緒に分割するので、例えば「, 」のようにカンマ+スペースで区切られていると、余分なスペースが含まれることがあります。
→この場合はTRIM
関数やARRAYFORMULA(TRIM(...))
で整形可能FLATTEN
は行列構造を無視して縦に並べるため、元の行の関連性は失われます
(つまり「どの注文のどの商品か」は分からなくなる)
まとめ
1セルに複数の値が入っているデータは、事務職や小売業の現場でもよく見かけます。
SPLIT関数とFLATTEN関数を組み合わせることで、そうしたデータを簡単に整形・一覧化することができます。
特にアンケート結果、商品リスト、連絡記録など、1セルに複数の内容が入っている表では非常に便利です。
ぜひ活用してみてください!