重いかもしれない。
let
ソース = Folder.Files("D:\日報"),
Add = Table.AddColumn(ソース, "カスタム", each Csv.Document([Content])),
Trs = Table.AddColumn(Add, "カスタム2" , each
Table.RemoveColumns(Table.PromoteHeaders([カスタム], [PromoteAllScalars=true]),{"備考"})),
Del = Table.SelectColumns(Trs,{"カスタム2"}),
Idx=Table.AddIndexColumn(Del,"Index",0,1),
Mrg=List.Accumulate(List.RemoveFirstN(Idx[Index],1),Idx[カスタム2]{0},(s, c) =>
let
Tbl=Table.NestedJoin(s, {"項目"}, Idx[カスタム2]{c}, {"項目"}, "Piv", JoinKind.LeftOuter),
Exp=Table.ExpandTableColumn(Tbl, "Piv", List.RemoveFirstN(Table.ColumnNames(Tbl[Piv]{0}),1))
in
Exp)
in
Mrg
別の方法。
let
ソース = Folder.Files("D:\日報"),
Add = Table.AddColumn(ソース, "カスタム", each Csv.Document([Content])),
Trs = Table.AddColumn(Add, "カスタム2" , each Table.PromoteHeaders([カスタム], [PromoteAllScalars=true])),
Del = Table.SelectColumns(Trs,{"カスタム2"}),
Tbl = Table.SelectColumns(Del[カスタム2]{0},{"項目"}),
Idx = Table.AddIndexColumn(Tbl, "インデックス", 1, 1, Int64.Type),
TblExp=(t as table)=>
let
Tbl2=Table.RemoveColumns(t,{"備考"}),
Unp = Table.UnpivotOtherColumns(Tbl2, {"項目"}, "属性", "値")
in
Unp,
Add2 = Table.AddColumn(Trs, "カスタム3" , each TblExp([カスタム2])),
Del2 = Table.SelectColumns(Add2,{"カスタム3"}),
Exp = Table.ExpandTableColumn(Del2, "カスタム3", {"項目","属性", "値"}),
Piv = Table.Pivot(Exp, List.Distinct(Exp[属性]), "属性", "値"),
Mrg = Table.NestedJoin(Idx, {"項目"}, Piv, {"項目"}, "Piv", JoinKind.LeftOuter),
Exp2 = Table.ExpandTableColumn(Mrg, "Piv", List.RemoveFirstN(Table.ColumnNames(Mrg[Piv]{0}),1)),
Srt = Table.Sort(Exp2,{{"インデックス", Order.Ascending}}),
Del3 = Table.RemoveColumns(Srt,{"インデックス"})
in
Del3