本节通过一个实例来讲解之前的所学的行、列、表的构造。
需求如下图所示,要求:统计实际业绩大于等于计划业绩的数据记录(完成业绩)。
比如第一个员工“休闲海”,他就是这样的好员工,实际业绩大于等于计划业绩,则会统计出来。
分析:
我们使用上图的方法,将“行1到倒数第二行”的数据同“第二行至最后一行”的数据相比,若小于等于,则为True。
另外一个条件是 “行1到倒数第二行”的“状态”为“计划”,满足这两个条件,就是我们想要的数据。
按照上头的思路,我们进入PQ处理。
这里将综合运用以前所学的知识点,比如下图,将向下填充数据。
然后我们新建一个“空查询”,目的就是找出上面的行,从而对其“业绩”进行比较。
上面一共有16行记录,则我们需要从第一行到倒数第二行,索引则是0~14。
但是我们有没有发现,若这里钉死了14,以后我们动态的增减数据会很麻烦,所以,下面我们需要得到“表1”的所有行,然后减去2,就是我们想要的效果。
如何得到“表1”的行数?
下面介绍一个笨办法。
然后看它的编辑栏里的函数。
“= List.NonNullCount(向下填充[姓名])”。
复制过去即可。
= {0..List.NonNullCount(表1[姓名])-2}
接下来就是添加一列,进行我们上面的对比操作。
if 表1[业绩]{[Column1]} <= 表1[业绩]{[Column1]+1} and 表1[状态]{[Column1]} = "计划" then 表1[姓名]{[Column1]} else null
这个判断表达式不难理解吧,就是我们之前的逻辑。
然后我们进行数据的整理,去掉第一列,剔除null值。
同“表1”进行合并。
得到我们想要的效果。
最后,这个方法很繁琐,其实是有更加容易的方法。
比如选中“状态”,对“业绩”进行透视列。
然后做个比较即可。
最后进行“逆透视列”。
本例仅供巩固之前所学。