分享

从Excel表中提取每天金额排前五的明细?用筛选可是办不到哦!

 昵称38017100 2019-04-13

今天碰到小伙伴提出了一个看起来很简单的问题。

需要从下面的清单表里提取出每天的金额为前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方法,你还能想到其他方法来解决这个问题么?欢迎交流!

偷偷告诉你,Excel函数公式加上普通操作也可以解决哦!你知道怎么做么?

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多