Excel – 基于多个条件返回最多发生的值
我有三个主要的Name
, Size
和Diameter
。 我想要的是过滤名称,并返回Size
的特定值Diameter
最多发生的值。 例如,我有一个像下面这样的表格:
| Name | Size | Diameter | ------------------------------ | A | 30 | 2232.23 | | A | 30 | 2232.23 | | A | 30 | 5382.98 | | A | 29 | 1123.44 | | A | 29 | 9323.42 | | A | 29 | 1123.44 | | B | 31 | 1232.11 | | B | 31 | 1232.11 | | B | 10 | 1111.00 | ------------------------------
对于Size
为30的A
,我应该从Diameter
得到的值是2232.23
而对于B
我应该得到Size
31
的1232.11
Diameter
值
这只是一个例子。 实际数据超过9000+行。 谢谢。
考虑到你的数据在列A,B和C中,你可以把这个数组公式放在D1单元格中
= INDEX(C $ 1:C $ 10,MODE(IF(A $ 1:A $ 10 = A1,MATCH(B $ 1:B 10 $,B $ 1:B $ 10,{0,0}))))
不要忘记按Ctrl + Shift + Enter。
尝试粘贴到单元格D2并拖动到最后一行:
= COUNTIFS(A:A,A2,B:B,B2,C:C,C2)
它返回每一行出现的次数。
使用这个公式。 公式首先创build通过2个设置条件的值的数组。 那么IF公式从数组中删除0个值。 最后,MODE公式计算剩余值并返回出现次数最多的值。
=SUMPRODUCT(IFERROR(MODE(IF(--($A$3:$A$11000=G2)*($B$3:$B$11000=H2)*$C$3:$C$11000<>0,--($A$3:$A$11000=G2)*($B$3:$B$11000=H2)*$C$3:$C$11000,"")),MAX(--($A$3:$A$11000=G2)*($B$3:$B$11000=H2)*$C$3:$C$11000)))
input它使用CTRL + Shift + Enter,因为它是一个数组公式。
如果要在ColumnD中显示最多的事件,则在单元格D3
使用此公式,并将其拖动到底部。
=SUMPRODUCT(IFERROR(MODE(IF(--($A$3:$A$11000=A3)*($B$3:$B$11000=B3)*$C$3:$C$11000<>0,--($A$3:$A$11000=A3)*($B$3:$B$11000=B3)*$C$3:$C$11000,"")),MAX(--($A$3:$A$11000=A3)*($B$3:$B$11000=B3)*$C$3:$C$11000)))
这里是一个数组公式(点击Ctrl + Shift + Enter一起)你可以尝试:
=INDEX($C$2:$C$20,MATCH(MODE(IF(($A$2:$A$20=E2)*($B$2:$B$20=F2)*($C$2:$C$20),($A$2:$A$20=E2)*($B$2:$B$20=F2)*($C$2:$C$20),"")),$C$2:$C$20,0),1)
基本上它使用MODE
functionfind最频繁的事件,然后使用INDEX/MATCH
返回值。