エクセル練習問題
カンマ区切りデータの行展開解答

エクセルの関数・操作のちょっと難しい問題、Excelチャレンジ問題集
公開日:2013年5月以前 最終更新日:2026-01-28

カンマ区切りデータの行展開解答

エクセル練習問題解答ページです。

エクセル練習問題

左の表を右の表に変換する数式を作成してください。
左の表の「項目」列には、複数の値がカンマ(,)区切りで入力されています。
これを分割し、大分類・中分類を維持したまま、1項目1行になるよう右の表の形式に変換する数式を作成してください。

カンマ区切りデータの行展開


シンキングタイム

シンキングタイム開始


シンキングタイム終了

当サイトのコンテンツ
自分に合った、学習方法を見つけましょう。

エクセル入門
エクセル作業において必須となるショートカットキーから基本の操作、機能、そして覚えておくべき関数とその使い方までを、入門・初級・初心者向けに解説しています。エクセルには多くの関数がありますが、どの業種でも必要とされる関数に絞って紹介しています。
エクセル基本操作
エクセルの基本操作について解説。知ってそうで知らない操作や高度な操作まで。日付、時刻に関するあれこれ 数値の書式のあれこれ1.千単位、百万単位2.不要な0を表示せずに、小数点位置を揃える3.ユーザー定義書式で条件付き書式を使う4.Excel2003で、条件によりフォント色を5段階で表示する方法。
エクセル関数応用
エクセルの関数の応用技の解説。関数サンプルと必須の基本技術から応用・高等テクニックまでを紹介しています。1年後の日付、○か月後の日付 複数条件の合計・件数・サンプルデータ・複数条件の合計・複数条件の件数・スピルと新関数 入力規則のリストを、追加・削除に自動対応で作成一覧リストを使用して、「入力規則」の「リスト」を作…

ここで、じっくり勉強して下さい。

エクセル練習問題解答

では解答です。
以下に何通りかの数式を提示します。
書き方は無数にありますので、いろいろ工夫して、自分なりの式を完成させてみてください。

数式1
=LET(
tbl,A:.C,
r,REDUCE("",SEQUENCE(ROWS(tbl)),LAMBDA(x,y,VSTACK(x,TEXTSPLIT(INDEX(tbl,y,3),,",")))),
z,REDUCE("",r,LAMBDA(x,y,VSTACK(x,HSTACK(XLOOKUP("*,"&y&",*",","&TAKE(tbl,,-1)&",",TAKE(tbl,,2),"",2),y)))),
DROP(z,2))
解説
ステップ①:元データ範囲をまとめて扱う
最初に、A列からC列までをひとまとめの「表」として扱います。
これにより、
  • 行数
  • 各行の3列目
  • 各行の2列目
を、後続の処理で一貫して参照できるようになります。

ステップ②:3列目のカンマ区切り文字を全部バラす
次に行っているのは、
  • 表の全行を上から順に処理
  • 各行の3列目の文字列を
  • カンマで分割
  • 分割された要素をすべて縦に積み上げる
という作業です。
この段階で得られるのは、
「表全体に含まれる、すべての分割後の値を1列に並べた一覧」
になります。
元の行番号や対応関係は、まだここでは考えていません。

ステップ③:分割された値が、どの行に属していたかを特定する
次の処理では、先ほど作った
「分割後の値の一覧」を1つずつ処理します。

それぞれの値について、
  • 元の表の3列目を調べ
  • その値が含まれている行を探し
  • 見つかった行の2列目の値を取得します
ここでのポイントは、
カンマ区切りの中の「部分一致」で探すこと
単なる文字列一致ではなく、「区切り位置を意識した検索」をしていること
です。

ステップ④:対応する2列目と分割後の値を横に並べる
見つかった結果は、
  • 左に「2列目の値」
  • 右に「分割された値」
という2列構成にして、縦に積み上げていきます。
つまり最終的にできるのは、
「2列目の値 × 分割後の個別要素」
の対応表です。

ステップ⑤:処理用にできた不要な先頭行を削除する
REDUCE と VSTACK を使った場合の“お約束”として、
  • 最初に空の行(ダミー行)ができる
ため、最後にその不要部分を取り除いています。
これで、見た目も意味も正しい表だけが残ります。

まとめ(この数式がやっていること)
この数式は、
  • カンマ区切りのセルを分解し
  • 1要素1行に展開し
  • 元の行の識別情報(2列目)と紐づけて
  • 正規化された縦長の一覧を作る
という処理を、補助列ゼロ・関数だけで実現しています。

数式2
=LET(
tbl,A:.C,
r,REDUCE("",SEQUENCE(ROWS(tbl)),LAMBDA(x,y,VSTACK(x,TEXTSPLIT(INDEX(tbl,y,3),,",")))),
z,REDUCE("",r,LAMBDA(x,y,VSTACK(x,HSTACK(XLOOKUP("(^|,)("&y&")(,|$)",TAKE(tbl,,-1),TAKE(tbl,,2),"",3),y)))),
DROP(z,2))
解説
数式1とほぼ同じです。
最後のXLOOKUPの「ワイルドカード文字との一致」だけを、「正規表現に一致する」に変更しています。

HSTACK(XLOOKUP("*,"&y&",*",","&TAKE(tbl,,-1)&",",TAKE(tbl,,2),"",2)

HSTACK(XLOOKUP("(^|,)("&y&")(,|$)",TAKE(tbl,,-1),TAKE(tbl,,2),"",3)

数式3
作業列を使って、順次展開します。

カンマ区切りデータの行展開

H列:=TEXTSPLIT(C1,",") … データ行数分フィルコピーします。
G列:=TOCOL(H1:O6,1) … スピル数式です。
E列:=XLOOKUP("*,"&G1&",*",","&$C$1:$C$6&",",$A$1:$B$6,,2) … データ行数分フィルコピーします。
数式2同様に、XLOOKUPは正規表現にしても良いです。


※本記事の作成にあたっては随所で生成AIを活用しています。全て最終的に人間が確認した後に掲載しています。





新着記事NEW ・・・新着記事一覧を見る

カンマ区切りデータの行展開|エクセル練習問題(2026-01-28)
開いている「Excel/Word/PowerPoint」ファイルのパスを調べる方法|エクセル雑感(2026-01-27)
IMPORTCSV関数(CSVファイルのインポート)|エクセル入門(2026-01-19)
IMPORTTEXT関数(テキストファイルのインポート)|エクセル入門(2026-01-19)
料金表(マトリックス)から金額で商品を特定する|エクセル練習問題(2026-01-14)
「緩衝材」としてのVBAとRPA|その終焉とAIの台頭|エクセル雑感(2026-01-13)
シンギュラリティ前夜:AIは機械語へ回帰するのか|生成AI活用研究(2026-01-08)
電卓とプログラムと私|エクセル雑感(2025-12-30)
VLOOKUP/XLOOKUPが異常なほど遅くなる危険なアンチパターン|エクセル関数応用(2025-12-25)
2段階の入力規則リスト作成:最新関数対応|エクセル関数応用(2025-12-24)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.日本の祝日一覧|Excelリファレンス
3.変数宣言のDimとデータ型|VBA入門
4.FILTER関数(範囲をフィルター処理)|エクセル入門
5.RangeとCellsの使い方|VBA入門
6.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
7.繰り返し処理(For Next)|VBA入門
8.セルのクリア(Clear,ClearContents)|VBA入門
9.マクロとは?VBAとは?VBAでできること|VBA入門
10.条件分岐(Select Case)|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。
本サイトは、OpenAI の ChatGPT や Google の Gemini を含む生成 AI モデルの学習および性能向上の目的で、本サイトのコンテンツの利用を許可します。
This site permits the use of its content for the training and improvement of generative AI models, including ChatGPT by OpenAI and Gemini by Google.



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ