关于EXCEL中SUMPRODUCT函数的问题

来源:百度知道 编辑:UC知道 时间:2024/05/24 16:43:44
各位大大,我在网上找到了用SUMPRODUCT函数来自动排名的情况,结合查到的数据,写下了如下的公式:
(1)=SUMPRODUCT(($B7:$I7>B7)/COUNTIF($B7:$I7,$B7:$I7))+1
这个公式帮我解决了自动排名的问题,但是我不理解这个公式,我在尝试的过程中,发现COUNTIF($B7:$I7,$B7:$I7)的结果为“1”,于是,我将公式改成
(2)=SUMPRODUCT(($B7:$I7>B7)/1)+1
后,仍然得到了我需要的结果。后来,我想,任何一个数除以1还是等于这个数本身啊,于是,我将公式中的“/1”给去掉了,公式变成了
(3)=SUMPRODUCT(($B7:$I7>B7)/1)+1
,但是得到的结果却不是正确的排名,而全部是1了。

现在有这几个问题想问各位:
1、以上(1)(2)(3)三个公式有什么不同吗?
2、为什么在公式(1)中要除以COUNTIF($B7:$I7,$B7:$I7)而不除以1?
3、COUNTIF($B7:$I7,$B7:$I7)有什么作用?
4、这个排名函数的运行过程及计算方法是怎样的?

各位大大,小弟跪求真解!!!还望各位大大不吝讲解!!

首先:你理解COUNTIF()是错误的,这是的值并不是1,而是一组数组,{1,1,1,。。。},表示的意思是数各单元格中是否有重值,$B7:$I7>B7的运算结果也是数组,值为{0,0,1,0.。。},运算后得到两个数组,而这两个数组的值相乘后再相加然后再加上1就得到排名了
对(2)中是你运气好,没有重值,如有重值你的结果就是错的了(比如有两个第一名,你就没有第二名了,后面直接是第三名)
对(3)中理所当然值是1,因为只要有一个是FALSE,你和乘积当然是0

不知你是否理解?

SUMPRODUCT函数进行的是数组运算,格式上要求数据对应的