本帖最后由 libo5563 于 2019-5-22 12:21 编辑
看数据挺规律的,pq 里的拆分 从右第一个 分割符应该可以用 如果考虑数据在行里会增加,就在第一次拆分时 按照每个};{ 中间的;选拆分到行,再建序数列的办法,将要的数据筛选出来,再透视回来就行了
let
源 = Excel.CurrentWorkbook(){[Name="表1"]}[Content],
更改的类型 = Table.TransformColumnTypes(源,{{"#", Int64.Type}, {"源字符串", type text}, {"期待的效果(想要提取出的字符串)", type text}}),
删除的列 = Table.RemoveColumns(更改的类型,{"期待的效果(想要提取出的字符串)", "#"}),
按分隔符拆分列 = Table.SplitColumn(删除的列, "源字符串", Splitter.SplitTextByDelimiter("{", QuoteStyle.Csv), {"源字符串.1", "源字符串.2", "源字符串.3", "源字符串.4", "源字符串.5"}),
更改的类型1 = Table.TransformColumnTypes(按分隔符拆分列,{{"源字符串.1", type text}, {"源字符串.2", type text}, {"源字符串.3", type text}, {"源字符串.4", type text}, {"源字符串.5", type text}}),
删除的列1 = Table.RemoveColumns(更改的类型1,{"源字符串.1"}),
已添加索引 = Table.AddIndexColumn(删除的列1, "索引", 1, 1),
逆透视的其他列 = Table.UnpivotOtherColumns(已添加索引, {"索引"}, "属性", "值"),
删除的列2 = Table.RemoveColumns(逆透视的其他列,{"属性"}),
按分隔符拆分列1 = Table.SplitColumn(删除的列2, "值", Splitter.SplitTextByEachDelimiter({":"}, QuoteStyle.Csv, true), {"值.1", "值.2"}),
更改的类型2 = Table.TransformColumnTypes(按分隔符拆分列1,{{"值.1", type text}, {"值.2", type text}}),
删除的列3 = Table.RemoveColumns(更改的类型2,{"值.1"}),
替换的值 = Table.ReplaceValue(删除的列3,"}","",Replacer.ReplaceText,{"值.2"}),
替换的值1 = Table.ReplaceValue(替换的值,",","",Replacer.ReplaceText,{"值.2"}),
替换的值2 = Table.ReplaceValue(替换的值1,"]","",Replacer.ReplaceText,{"值.2"}),
分组的行 = Table.Group(替换的值2, {"索引"}, {{"计数", each Table.AddIndexColumn(_, "索引.1", 1, 1), type table}}),
#"展开的“计数”" = Table.ExpandTableColumn(分组的行, "计数", {"索引", "值.2", "索引.1"}, {"索引.2", "值.2", "索引.1"}),
删除的列4 = Table.RemoveColumns(#"展开的“计数”",{"索引.2"}),
已透视列 = Table.Pivot(Table.TransformColumnTypes(删除的列4, {{"索引.1", type text}}, "zh-CN"), List.Distinct(Table.TransformColumnTypes(删除的列4, {{"索引.1", type text}}, "zh-CN")[索引.1]), "索引.1", "值.2")
in
已透视列
|