Excel排名技术问题:排除David生成新排名,求解函数实现方案
解决Excel中排除特定人员的销售额排名问题
嘿,我来帮你搞定这个排除David后的排名需求!之前用RANK+COUNTIF或SUMPRODUCT没成功,大概率是没把“排除David”的条件精准嵌套进去,下面分两种Excel版本给你靠谱的解决方案:
一、适用于Excel 365/2021(支持动态数组)
如果你的Excel是新版,直接用RANK.EQ结合FILTER函数就能轻松实现,公式简单直观:
=RANK.EQ(B2, FILTER($B:$B, $A:$A<>"David"))
公式解释:
FILTER($B:$B, $A:$A<>"David"):先从B列(销售额)中过滤掉所有A列姓名为David的行,得到一个仅包含其他业务员销售额的动态数组RANK.EQ(B2, ...):将当前单元格的销售额,在过滤后的数组中进行排名
注意:输入公式后直接回车即可,Excel会自动填充整列(动态数组特性);如果需要手动下拉,记得把范围改成绝对引用(比如$B$2:$B$100和$A$2:$A$100,替换成你实际的数据行数)。
二、适用于旧版Excel(无动态数组)
如果你的Excel版本不支持FILTER,用SUMPRODUCT就能搞定,公式如下:
=SUMPRODUCT(--($B$2:$B$100>B2), --($A$2:$A$100<>"David")) + 1
公式解释:
--($B$2:$B$100>B2):把“销售额大于当前单元格”的判断结果转换成1/0(TRUE→1,FALSE→0)--($A$2:$A$100<>"David"):把“姓名不是David”的判断结果转换成1/0- 两个数组相乘后求和,得到比当前销售额高且不是David的人数,最后加1就是当前业务员的排名
特殊需求调整:
如果遇到销售额相同的情况,想要得到不重复的排名(比如并列第2后直接跳到第4),可以把公式改成:
=SUMPRODUCT(--($B$2:$B$100>B2), --($A$2:$A$100<>"David")) + SUMPRODUCT(--($B$2:$B$100=B2), --($A$2:$A$100<>"David"), --($A$2:$A$100<=A2))
这个公式会在并列销售额时,根据姓名的排序来分配唯一名次。
内容的提问来源于stack exchange,提问作者cnsnn
相关产品推荐
相关产品推荐

