カンマ区切りのデータを1列に一覧化する方法|SPLIT関数×FLATTEN関数の組み合わせ活用

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, ",")))

結果はこちら👇

1行だけならARRAYFORMULA関数は不要です。

応用①:改行で区切られたデータも対応可能

たとえば、次のように改行で区切られている場合もあります。

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

=FLATTEN(SPLIT(A2, CHAR(10)))

応用②:重複を除きたい場合

同じ商品が複数回出てくる場合、重複を取り除くには UNIQUE 関数を使います。

=UNIQUE(ARRAYFORMULA(FLATTEN(SPLIT(B2:B4, ","))))

注意点

  • SPLIT は空白も一緒に分割するので、例えば「, 」のようにカンマ+スペースで区切られていると、余分なスペースが含まれることがあります。
    →この場合は TRIM 関数や ARRAYFORMULA(TRIM(...)) で整形可能
  • FLATTEN は行列構造を無視して縦に並べるため、元の行の関連性は失われます
    (つまり「どの注文のどの商品か」は分からなくなる)

まとめ

1セルに複数の値が入っているデータは、事務職や小売業の現場でもよく見かけます。
SPLIT関数とFLATTEN関数を組み合わせることで、そうしたデータを簡単に整形・一覧化することができます。
特にアンケート結果、商品リスト、連絡記録など、1セルに複数の内容が入っている表では非常に便利です。
ぜひ活用してみてください!

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

1994年生まれ。福岡出身、福岡育ち、福岡在住。
エンジニアを数年経験し、現在は事業会社でデータ分析業務に従事しています。
好きな物:猫、ラーメン
取得資格:基本情報技術者、G検定、統計検定2級

目次