Excel之PowerQuery 换个方式提问对大家都好
网友提问:

放大图片

回答网友问题
您确实发我文件了。。。但是数据这个东西很神奇,天天接触的人会觉得这个表很简单,非本职工作的人会觉得这个表好复杂呀。。。
其实这个表不复杂,您最终的目的也非常的简单的
就是要把下表

变成:

(1)导入数据到PQ

点下图红圈部分改成日期类型

(2)按住Ctrl用鼠标左键选中前3列,【转换】-【逆透视】-【逆透视其他列】,得到结果

点下图红圈的位置,把值这列改成文本

(3)分组
现在公式中的x代表数据列的每个Table

我们再对每个Table按日期分组
这时红框里面的代码代表数据列的每个Table,而y代表每个Table里面的数据2那列的每个Table

我们点进去看一下数据列的其中一个Table。看看我们都需要哪些数据

既然y是数据2列的每个Table
y[日期]{0} 代表数据2列的每个Table日期列的第1个值,把这个值转成通过Date.ToText可以转成文本,也可以通过第2参数自定义你需要的格式。

y[属性] 和 y[值] 这两个列可以通过List.Zip进行列表“压缩”

相当于
y[属性] = {"语文","数学","英语"}
y[值] = {"87","24","77"}
List.Zip({ y[属性] ,y[值] }) ={{"语文","87"},{"数学","24"},{"英语","77"}}
我们可以使用List.Transform遍历上面列表中每一个小列表,再使用Text.Combine对上面大列表中的每个小列表进行合并以冒号做分隔符

得到: {"语文:87","数学:24","英语:77"}
再用 Text.Combine({"语文:87","数学:24","英语:77"},";") 得到 "语文:87、数学:24、英语:77"
再用 Date.ToText(y[日期]{0}) & " " & "语文:87、数学:24、英语:77"
得到: "2023/4/1 语文:87、数学:24、英语:77"

取数据2这列

再通过回车换行符使用每个List变成字符串

最终代码:

上载后

别忘记改一下单元格设置,选中B列,鼠标右键~设置单元格格式

返回最终结果:


方法不只一种,我是随便写一种,也许其它小伙伴有更简单的方法,可以拿出来分享
对与错 或是否考虑全面都不重要,重要的是分享,给人更多选择,别吝啬你的答案。
学习最好的方式是把你学到的知识讲出来发到B站,并义务在B站回答网友问题,眼界宽了才能增长知识!
技能就和金庸武侠一样,每个阶段的人会有不同的感悟,可能有一天,我也会变成欧阳峰前辈后期那样:张口就是内层、外层、隐形、显形、黄蓉不讲《九阴真经》原理扎心呀。如果那天真的来了,你们一定要把我送回小学二年级第一学期,让我重学乘法口诀。

PowerQuery合集:https://www.bilibili.com/video/BV1oa4y1j75e