Power Query中如何循环遍历列表实现自动列拆分?
Power Query 列拆分/转成行 高效解决方案
方案一:动态生成拆分列名(替代手动编写数千项列表)
当必须将列拆分为多列时,无需手动编写列名列表,通过以下代码自动适配最大拆分数量:
// 计算所有行中按=拆分后的最大元素个数 maxSplitCount = List.Max(Table.AddColumn(rc1, "temp", each List.Count(Splitter.SplitTextByDelimiter("=", QuoteStyle.Csv)([list])))[temp]), // 动态生成对应数量的列名(格式为list.1、list.2...) newColumnNames = List.Transform({1..maxSplitCount}, each "list." & Text.From(_)), // 执行拆分操作 result = Table.SplitColumn(rc1, "list", Splitter.SplitTextByDelimiter("=", QuoteStyle.Csv), newColumnNames)
方案二:将列转成行(更符合可读性需求)
拆分出几千列会导致表格极度臃肿,更合理的方式是直接将拆分后的内容转为多行,操作如下:
// 第一步:将原列按=拆分为列表 withSplitList = Table.AddColumn(rc1, "拆分后列表", each Splitter.SplitTextByDelimiter("=", QuoteStyle.Csv)([list])), // 第二步:将列表展开为单独的行 finalResult = Table.ExpandListColumn(withSplitList, "拆分后列表")
可选优化:保留原行索引
如果需要区分每个拆分项来自哪一行,可添加索引列:
// 添加原行索引 withIndex = Table.AddIndexColumn(rc1, "原行索引", 1, 1), // 拆分列为列表 withIndexedList = Table.AddColumn(withIndex, "拆分后列表", each Splitter.SplitTextByDelimiter("=", QuoteStyle.Csv)([list])), // 展开为行 finalResult = Table.ExpandListColumn(withIndexedList, "拆分后列表")
内容的提问来源于stack exchange,提问作者Kibitokai
相关产品推荐
相关产品推荐

