今天碰到小伙伴提出了一个看起来很简单的问题。 需要从下面的清单表里提取出每天的金额为前5的明细。 本来他们是在讨论如何用SQL写查询语句的,我实在是插不了嘴(因为我只见过SQL跑,但是却自己跑不了SQL)。 可是到最后居然没讨论出结果,所以我只好放出大招了——Power Query装X利器! 第一步、加载数据,想个思路加载进来是这样。 因为需要按照日期来提取数据,所以我们先按照日期分个组看看。 分好组是这样的。 然后,我们其实不是要计数,我们需要得到每个日期对应的明细表,所以我们把上面编辑栏里的代码改一下。 把Table.RowCount去掉,得到的就是对应的表格了,就好比筛选后的表,只不过这里的“单元格”可以存放Table这种内容。 第二步、处理每个Table对每个表格进行金额从大到小排序,用Table.Sort,指定按照金额列降序排列。 然后再取前5行,用Table.FirstN函数。 这样每个Table就是我们需要的数据了。 第三步、展开处理好的Table同样也是写一个M函数,Table.ExpandTableColumn,把处理好的表格展开。 注意这里是新加的步骤(上面其他的都是在原有代码上更改),所以要点击编辑栏左边的fx,然后再写上这个展开表的公式就好了。 然后再把数据加载回工作表就OK了! 这里有个好处就是,只要数据源更新了,每天前五的明细直接刷新即可得到! 其实学会了M函数,方法简直不要太多啊! 比如下面的这个也行。 通过添加一列辅助,来判断对应的金额是否是日期的前5个之内的,然后再来筛选TRUE就好了。 PQ里的M函数处理这些问题真的很方便!当然如果数据量大的话,我们还需要考虑效率问题,这个就不是我们今天考虑的问题了。 那么,除了以上的PQ方法,你还能想到其他方法来解决这个问题么?欢迎交流!
|
|
来自: 昵称38017100 > 《表格使用学习》