
你是不是也经常收到下面这样的表格?表面看起来整齐,但重要信息却像“压缩包”一样,被硬塞在同一个单元格里?

整体上看各个字段,好像已经是一维表了,每一列都是独立的属性,但是型号和数量是多个数据挤在一个单元格里,需要将他们按顺序拆分成行,变成下面这样,才算是标准的表格:

如何完成这种转换呢?其实利用PowerQuery很简单,今天介绍一个PowerQuery中的“数据解压”神技:List.Zip函数。
只需简单几步,就能把这种“伪一维表”瞬间转换为标准、清晰的数据格式,为后续的数据透视、分析建模扫清障碍。下面,我们就来一步步拆解这个实用又优雅的解决方案。
1. 添加自定义列,将挤在一起的列拆分为列表
利用Text.Split函数分别将这两列拆分为列表,先拆分[型号]列:
Text.Split([型号],",")

点击第一行的List可以在左下角看到拆分后的效果。
同样的方式,再添加个自定义列,拆分[数量]列:

通过这个步骤,就将挤在一个单元格内的数据拆分开了。
2. 利用List.Zip函数,将两个List合并到一起
将两个列表合并到一起,有个M函数是List.Zip专门做这种处理,它可以将多个列表相同位置的数据合并到一起。
再添加个自定义列:
List.Zip( { [型号列表] , [数量列表] } )

上面两个步骤,其实也可以合并为一个步骤,直接添加一个这样的自定义列就可以了:
List.Zip(
{
Text.Split([型号],","),
Text.Split([数量],",")
}
)

这里处理以后,List.Zip就可以将{A1,A2,A3}和{1,2,3}这样的列表转换成{ {A1,1},{A2,2},{A3,3} }的形式,然后下一步将转后的列表展开就可以了。
3. 展开列表
对于经过List.Zip处理后的自定义列,点击展开按钮,选择“扩展到新行”,

扩展以后这一列还是List,再次展开,选择“提取值”:

然后自定义列就能看到想要的效果了。

4. 拆分自定义列,完成转换
对上面的自定义列按分隔符拆分,并删除原有的[型号]和[数量]列,就得到了最终的效果。
上面这种数据转换的关键是M函数List.Zip函数的运用,利用它可以轻松将多个列表按顺序合并在一起,本文也是帮你理解该函数的一个很经典的示例。
ABI智能助手不断更新迭代,现在越来越强大,PowerBI星球会员,可以直接在知识星球中获取免费使用哦。支持单独购买,感兴趣的伙伴请和我联系(备注:ABI智能助手)。

加入或续费PowerBI星球社群,不仅能解锁ABI智能助手、ABI Chat,ABI Report,还能获取海量 PowerBI 教程、AI应用、专属答疑等优质资源,快速提升PowerBI分析技能~

夜雨聆风