[[20231002002936]] 『パワークエリでカンマ区切りのデータを左から順に』(exp) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『パワークエリでカンマ区切りのデータを左から順にセット分割』(exp)

パワークエリについて質問させてください。

   A         B
1  運行       着時刻
2 東京,新橋,品川  1:00,1:05,1:15

となっているデータを

   A         B
1  運行      着時刻
2  東京      1:00
3  新橋      1:05
4  品川      1:15

といったように、左のデータから順番にセットで分割していく方法はありますでしょうか?
列分割だけでは不要な行が複製されてしまい、うまくセットが組めずに困っております。。。お力添えいただけますと幸いです。よろしくお願いいたします。

< 使用 Excel:Microsoft365、使用 OS:Windows11 >


下記の手順でうまくいきますかね?
※ 入れ替えを2回実行しているのでデータ量によってはもっさりするかもです。

ヘッダーを 1行目として使用

変換タブ > テーブルグループ > 入れ替え

変換タブ > テキストの列グループ > 区切り記号による列の分割

変換タブ > テーブルグループ > 入れ替え

1行目をヘッダーとして使用

(TZ) 2023/10/02(月) 05:05:11


すみません、複数行の場合を考慮していませんでした。。。
(TZ) 2023/10/02(月) 05:28:17

タイムアップ。。。

let

    ソース = Excel.CurrentWorkbook(){[Name="テーブル1"]}[Content],

    変更された型 = Table.TransformColumnTypes(ソース,{{"運行", type text}, {"着時刻", type text}}),

    降格されたヘッダー数 = Table.DemoteHeaders(変更された型),

    削除された他の列 = Table.SelectColumns(降格されたヘッダー数,{"Column1"}),

    区切り記号による列の分割 = Table.ExpandListColumn(Table.TransformColumns(削除された他の列, {{"Column1", Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "Column1"),

    カスタム1 = Table.SelectColumns(降格されたヘッダー数,{"Column2"}),

    区切り記号による列の分割1 = Table.ExpandListColumn(Table.TransformColumns(カスタム1, {{"Column2", Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "Column2"),

    カスタム2 = List.Zip( { 区切り記号による列の分割[Column1], 区切り記号による列の分割1[Column2] } ),
    カスタム3 = Table.FromRows( カスタム2 ),

    昇格されたヘッダー数 = Table.PromoteHeaders(カスタム3, [PromoteAllScalars=true])
in
    昇格されたヘッダー数
(TZ) 2023/10/02(月) 06:19:12

 ・インデックス列の追加
 ・[インデックス]列を選んで、変換/その他の列のピボット解除
 ・[値]列を選んで、変換/列の分割/区切り記号による分割
  ※詳細設定オプションで、分割後の列数:10
 ・[インデックス][属性]列を選んで、変換/その他の列のピボット解除
 ・[属性]列を選んで、変換/列のピボット
 ・不要列を削除
 ・閉じて読み込む

 ※重要! 列の分割で、想定される最大列数を指定してください
(マナ) 2023/10/02(月) 08:03:59

 こんなんでも

 let
    ソース = Excel.CurrentWorkbook(){[Name="テーブル1"]}[Content],
    Combine=Table.CombineColumns(ソース,{"運行","着時刻"},each _,"Combine"),
    Transform = Table.TransformColumns(Combine, {"Combine", each List.Zip({Text.Split(_{0},","),Text.Split(_{1},",")})}),
    Expand = Table.ExpandListColumn(Table.ExpandListColumn(Transform, "Combine"), "Combine"),
    Split=List.Split(Expand[Combine],2),
    TB=Table.FromRows(Split,{"運行","着時刻"}),
    変更された型 = Table.TransformColumnTypes(TB,{{"運行", type text}, {"着時刻", type time}})
in
    変更された型
(まる2021) 2023/10/02(月) 08:28:45

最初にリスト変換してしまったほうが便利がいいかもしれません。

    リスト変換 = List.Transform(Table.ToColumns(ソース), each Text.Split(Text.Combine(_, ","), ",")),
    テーブル変換 = Table.FromColumns(リスト変換, {"運行", "着時刻"}),
    型の変更 = Table.TransformColumnTypes(テーブル変換,{{"運行", type text}, {"着時刻", type time}})
(d-q-t-p) 2023/10/02(月) 09:23:02

次の式でどうでしょう。

Sheet2!A2: =TRIM(MID(SUBSTITUTE(Sheet1!A$2,",",REPT(" ",100)),1+100*(ROW(A1)-1),100))

右と下にコピーします。
(メジロ) 2023/10/02(月) 10:47:59


>パワークエリについて質問させてください。

すいません。ここを読み飛ばして数式の案を書き込みました。

(メジロ) 2023/10/02(月) 11:00:13


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.