当前位置:首页 > 时尚

rank函数升序是0还是1

```html

打开Excel,函数还在B2单元格敲下 =RANK(A2,升序$A$2:$A$10,0),回车,函数还A2的升序数值在区域里排第几大立刻跳出来。把最后的函数还0改成1,排名瞬间颠倒。升序问题就出在这个参数上——0代表降序,函数还1代表升序。升序很多人第一次用的函数还时候都会愣一下:凭什么是0不是1?

这事得从Excel的函数设计逻辑说起。RANK函数的升序完整语法是 RANK(number, ref, [order]),第三个参数order是函数还个可选值。官方文档写得很清楚:如果order为0或省略,升序Excel按降序排列;如果order为非零值,函数还按升序排列。升序注意这里说的函数还是“非零值”,也就是说你填1、2、-5、100,效果都一样,都是升序。但日常使用中大家约定俗成填1,因为1在二进制里代表“真”,0代表“假”,这种设计思路在编程世界里很常见。

我拿一组销售数据实际跑了一遍。假设区域里有 85、92、78、96、88 五个数字。用 RANK(85, 区域, 0),结果是4,因为96排第一、92第二、88第三,85只能排第四。换成 RANK(85, 区域, 1),结果变成2,因为78最小排第一,85排第二。同一个数字,同一个区域,就因为这个参数从0变1,名次直接从第四蹦到第二。如果你在做成绩排名,用错了方向,第一名变倒数,那场面可就尴尬了。

为什么默认是降序?我猜和实际应用场景有关。成绩排名、销售业绩、竞赛评分,绝大多数情况下人们关心的是“谁最高”,而不是“谁最低”。所以Excel把0(降序)设为默认值,省略第三个参数时自动按从大到小排。这个设计挺合理,但确实容易让新手困惑——毕竟“0”在直觉上更像“没有”或“不启用”,而不是“降序”。

有个细节值得注意:RANK函数在Excel 2010之后有了替代版本RANK.EQ和RANK.AVG,用法完全一样,第三个参数还是0和1的规则。微软没有改这个设计,说明它已经成了事实标准。我在教别人用RANK的时候,通常直接说“想从大到小排名就写0,想从小到大排名就写1”,比解释什么降序升序更省事。对方记住这个对应关系,基本就不会出错。

再补一个容易踩的坑。有人写 =RANK(A2,$A$2:$A$10,),第三个参数留空但保留了逗号。Excel会把这个空参数当作0处理,也就是降序。还有人写 =RANK(A2,$A$2:$A$10,FALSE),FALSE在Excel里等于0,结果还是降序。想升序必须写TRUE或者1或者任何非零数字。这个逻辑和IF函数里TRUE/FALSE的用法一脉相承,但放在RANK里就容易被忽略。

最后说个实际案例。之前帮同事处理一份员工考核表,她用的公式是 =RANK(B2,$B$2:$B$50,1),结果分数最高的那个人排名第50。她以为函数坏了,其实是把升序当成了降序。改成0之后,排名立刻正常。她后来跟我说,一直以为“1”代表“第一”,所以填1想拿第一名,没想到1在这里的意思是“从小到大排”。这个误解挺有代表性——参数的数值含义和业务含义完全是两码事。

所以回到标题的问题:RANK函数升序是0还是1?答案是1。0是降序,1是升序。省略第三个参数等同于0。记住这个对应关系,比背什么“order参数非零即升序”要实用得多。下次写公式的时候,想清楚你要的是从高到低还是从低到高,然后填对那个数字就行。

```

分享到: