Excel – 基于多个条件返回最多发生的值

我有三个主要的NameSizeDiameter 。 我想要的是过滤名称,并返回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 311232.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) 

基本上它使用MODEfunctionfind最频繁的事件,然后使用INDEX/MATCH返回值。