之前有同学发了一个这个问题,如下图所示,左边是原始数据表,标有底色的B/G/H列是要按照右表中的要求进行公式计算的。

如要求所示,B列排名是按照某片区下某等级之间的5月业绩环比分组排名,G列“是否各片区等级前两名”要求排除环比负值,H列“给予奖金”是根据等级及排名分配多少奖金,最后要得到的如下表:

排名

先来看排名,这个排名是一个典型的分组排名,思路有很多,我们说几种。

countifs

首先是countifs多条件计数,限定多个条件进行分组,再判断业绩是否大于当前值,这是用这个函数的思路。

在B2单元格输入公式“=COUNTIFS(C:C,C2,D:D,D2,F:F,">"&F2)”,这个公式有3个限制条件,C列里为A等级,D列里为东北片区,F列里大于当前值F2的有多少个,结果是3个,意思是A等级的东北片区里有3条记录的业绩环比大于-40

根据前面我们知道,B2这条记录的排名应该是4,因此要给这个公式后面加1,下拉以后得到如下结果。

Sumproduct

这是countifs多条件计数,还可以用sumproduct函数,这个函数的作用是返回相应的数组或乘积的和,参数就是一个一个的数组或区域。

在A2单元格输入公式“=SUMPRODUCT((C2:C25=C2)(D2:D25=D2)(F2:F25>F2))”,第一个区域C2:C25=C2返回的是一个Ture/False构成的数组区域,用来判断C2是否在C2:C25的组别中,同理D2:D25=D2判断D2是否在D2:D25也就是片区的组别里,F2:F25>F2是用来判断当前值F2是否大于所在分组的业绩环比值,最后得到的结果是3,意思是当前分组下,有3个人的业绩环比是大于-40%的。

同理,在这个公式后面加1,得到排名,结果同countifs一样,其实原理也差不多。

G列是否各片区前两名,要求排除业绩环比负值的,这个很简单,就用if函数判断就可以,注意这里还使用了and逻辑函数,意思是同时满足这两个条件。在G2单元格中输入公式“=IF(AND((B2<3),(F2>0)),"是","")”

最后H列奖金,限制条件是A等级的前两名奖金300,B等级的前两名奖金200,C等级的前两名奖金100。这个用if函数嵌套就可以,当然还有更简洁的实现方法。看大家怎么想了。这里if函数嵌套公式是,“=IF(G2="是",IF(C2="A",300,IF(C2="B",200,IF(C2="C",100))),"")”。


©著作权归作者所有:来自51CTO博客作者mb5fe18f5282239的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 为什么说 Python 内置函数并不是万能的?
  2. 给你的Excel增加正则处理函数,简直如虎添翼
  3. Python 之父为什么嫌弃 lambda 匿名函数?
  4. Python 函数为什么会默认返回 None?
  5. Python 为什么没有 main 函数?为什么我不推荐写 main 函数?
  6. Excel公式太复杂?我花一晚上做了个格式化工具
  7. 学编程这么久,还傻傻分不清什么是方法(method),什么是函数(function)?
  8. 秒懂!图解四个实用的Pandas函数!
  9. 一个真实问题,搞定三个冷门pandas函数

随机推荐

  1. 【ncnn android】算法移植(九)——DBface a
  2. dx 工具的使用
  3. Android中的自定义主题和样式
  4. 在Android中如何让gif动起来
  5. 设置 TextView 文字居中
  6. Android(安卓)NDK开发:HelloNDK
  7. android 和 lucene
  8. [android]布局(容器)简介和使用方法
  9. Android(安卓)列表按照时间排序
  10. android按屏幕大小动态确定控件位置及大