Excel 使用power query按特定顺序排列值
我希望清理一个表格,我一直在努力删除复杂的公式,并选择使用PQE对我的数据进行排序 下面是我正在处理的数据的合成示例。 我希望输出列在材质和子值之间交替,类似于书中的标题和子标题 M代码到目前为止:Excel 使用power query按特定顺序排列值,excel,formatting,office365,powerquery,delimiter,Excel,Formatting,Office365,Powerquery,Delimiter,我希望清理一个表格,我一直在努力删除复杂的公式,并选择使用PQE对我的数据进行排序 下面是我正在处理的数据的合成示例。 我希望输出列在材质和子值之间交替,类似于书中的标题和子标题 M代码到目前为止: let Source = Excel.CurrentWorkbook(){[Name="Table3"]}[Content], #"Changed Type" = Table.TransformColumnTypes(Source,{{&qu
let
Source = Excel.CurrentWorkbook(){[Name="Table3"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Material ", type text}, {"Sub ", type text}, {"CAS", type text}}),
#"Trimmed Text" = Table.TransformColumns(#"Changed Type",{{"Material ", Text.Trim, type text}, {"Sub ", Text.Trim, type text}}),
#"Cleaned Text" = Table.TransformColumns(#"Trimmed Text",{{"Sub ", Text.Clean, type text}}),
#"Replaced Value" = Table.ReplaceValue(#"Cleaned Text","-","",Replacer.ReplaceText,{"Sub "}),
#"Merged Columns" = Table.CombineColumns(#"Replaced Value",{"Material ", "Sub "},Combiner.CombineTextByDelimiter(" ", QuoteStyle.None),"Merged"),
#"Split Column by Delimiter" = Table.ExpandListColumn(Table.TransformColumns(#"Merged Columns", {{"Merged", Splitter.SplitTextByDelimiter(" ", QuoteStyle.Csv), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "Merged"),
#"Changed Type1" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"Merged", type text}})
in
#"Changed Type1"
这段代码的问题是,它在组合时没有正确列出材料,我也不知道如何正确排序CAS编号
如果有人对如何实现期望的输出有任何想法,我们将不胜感激。您可以使用我在上一个类似问题中向您展示的相同技巧,从您的输入中获得您的输出
- 创建两个列列表;然后
将它们组合起来List.Zip
- 诀窍在于,对于列表1(例如输出列1),您可能需要在子列列表的顶部添加Material列的内容(或者替换
,如果仅此而已;如果是这种情况,则在-
列表的开头添加一个CAS
,这样事情就会排在末尾-
let
Source = Excel.CurrentWorkbook(){[Name="Table13"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Material", type text}, {"Sub", type text}, {"CAS", type text}}),
//combine the columns
#"Added Custom" = Table.AddColumn(#"Changed Type", "Custom", each
let
L1 = if [Sub] = "-" then {[Material]}
else List.Combine({{[Material]},Text.Split([Sub],"#(lf)")}),
L2 = if [Sub] = "-" then {[CAS]}
else List.Combine({{"-"},Text.Split([CAS],"#(lf)")})
in
List.Zip({L1,L2})),
#"Removed Columns1" = Table.RemoveColumns(#"Added Custom",{"Material", "Sub", "CAS"}),
//split the combined columns
#"Expanded Custom" = Table.ExpandListColumn(#"Removed Columns1", "Custom"),
#"Extracted Values" = Table.TransformColumns(#"Expanded Custom",
{"Custom", each Text.Combine(List.Transform(_, Text.From), ";"), type text}),
#"Split Column by Delimiter" = Table.SplitColumn(#"Extracted Values",
"Custom", Splitter.SplitTextByDelimiter(";", QuoteStyle.Csv), {"Material", "CAS"})
in
#"Split Column by Delimiter"
我可以在这里给你留言吗?@Nick顺便说一句,如果我的回答满足你发布的问题,如果你能将其标记为已接受,我将不胜感激。