在《Excel公式技巧50:根据条件来排序》中,我们基于指定的一个条件对数据进行排序,所举示例为给不同区域的员工按销售额从大到小的顺序排序,结果如下图1所示。
图1
如果想要基于两个条件或者多个条件来排序呢?例如,下图2所示的工作表,给员工按区域和不同产品的销售额从大到小来排序。
图2
在单元格E2中输入公式:
=SUMPRODUCT((B2:B24=B2)*(C2:C24=C2)*(D2<D2:D24))+1
下拉至对应的数据单元格结束为止,结果如下图3所示。
图3
如图3所示,在华中区域销售产品1的有两名员工,员工1排名第2,而员工17排名第1。
公式中:
(B2:B24=B2)
将公式所在单元格中行对应的列B中的值与单元格区域B2:B24中的每个值相比较,得到一个由TRUE/FALSE值组成的数组:TRUE表示区域中与该单元格值相等的单元格,FALSE表示不相等的单元格。
同理,公式中:
(C2:C24=C2)
也得到一个由TRUE/FALSE值组成的数组,表示公式所在单元格中行对应的列C中的值与单元格区域C2:C24中的每个值相对较的结果。
公式中:
(D2<D24)
将公式所在单元格行对应的列D中的值与单元格区域D2:D24中的每个值比较,如果比该值大则为TRUE,否则为FALSE,也得到一个由TRUE/FALSE值组成的数组。
三个数组相乘,代表与的关系,即在指定的区域中指定的产品的销售额的比较。
下面是公式的转换过程,公式可以转换为:
=SUMPRODUCT({TRUE;TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE}*{TRUE;FALSE;TRUE;FALSE;TRUE;FALSE;TRUE;FALSE;TRUE;FALSE;TRUE;FALSE;TRUE;FALSE;TRUE;FALSE;TRUE;FALSE;TRUE;FALSE;TRUE;FALSE;TRUE}*{FALSE;TRUE;FALSE;FALSE;TRUE;TRUE;TRUE;TRUE;TRUE;FALSE;TRUE;TRUE;TRUE;TRUE;FALSE;TRUE;TRUE;TRUE;TRUE;TRUE;FALSE;TRUE;TRUE})+1
转换为:
=SUMPRODUCT({0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;1;0;0;0;0;0;0})+1
即:
=1+1
=2
加上1,表明单元格D2中的值在对应区域中销售的产品销售额从大到小排列的位置。示例中,1表示单元格D2中的值在对应区域中销售的产品中有1个的销售额数值比它大,那么它排在第2位。
欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。
欢迎到知识星球:完美Excel社群,进行技术交流和提问,获取更多电子资料。
完美Excel社群2020.8.31动态
#Excel公式# 查找一列中有多少个值出现在另一列中
#话题# 关于Excel中的高级筛选功能