此处不允许使用分组函数_Power Query中使用List.Accumulate函数做分组操作

在Excel中对于分数评级,最简单快捷的办法就是用VLOOKUP函数了,评级的条件可以使用做好的评级表格,也可以直接用数组写在公式内部。

82b793121aad223c5b0208dd225476a8.png

或者这样:

b7091b219d3bfc231f78c2bb65c21d6b.png

在Power Query中我们用什么办法才能做到这样的分级呢?

List.Accumulate

List.Accumulate函数每次从给定的数组中取出两位:

  • x:起始值
  • y:终止值

这是不是正符合我们的要求,只要我们的分数落在xy之间,我们就可以给出一个评级,我们来测试一下:

我们先做一个评级标准的表格:

cf4a8f11dc0acd0684879d19a2df6127.png

我们用分数这一列来做为List.Accumulate函数的第一参数,第二参数从0开始:

c85e2431be7b85696f188c6dc87f61fb.png

可能看不太清楚,我把自定义列的公式复制出来:

List.Accumulate(T[分数],0,(x,y)=>if [分数]>=x and [分数]

就像我们开始时描述的一样,[分数]>=x and [分数]

有了这个结果再来返回文字描述就简单多了。

List.PositionOf

List.PositionOf函数可以返回一个列表元素在列表中的位置,然后我们根据这个位置找到对应的文本描述:

ec8dbd9d4ac117c92afc1ad2ece2a4a9.png

我们来看具体的公式:

T[评级]

{List.PositionOf(T[分数],

List.Accumulate(T[分数],0,(x,y)=>if [分数]>=x and [分数]

这样就看的很清楚,T[评级]就是我们要找的评级文本列,后面的大括号就是行号,这个行号要通过List.PositionOf函数来获得。

List.PositionOf函数:

  • 第一参数用的就是T[分数],评级标准表格中的分数列
  • 第二参数用的就是上面的List.Accumulate函数返回的结果

函数的含义就是返回List.Accumulate函数返回的结果在T[分数]这个列表中的位置。

我们最终得到的评级的结果与LOOKUP函数得到同样的结果。

在Power Query中的数据处理方式其实更直接。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值