Excel:如何统计一个数据范围在同一行中包含两个值的次数

我有一系列的单元格,包含B1:D80中的三个组。 数组匹配示例:

5 2 8

4 7 9

9 2 3

我总共有40个队伍,我纵向和横向列出。 数组示例

___ 9 ___ 4 ___ 3 …

9

4

3 …

我的目标是计算匹配数组中一行中同时包含团队数组左边和顶部的数字的次数。 所以,在第一组的第一个单元格中,9和9显然只是数出9的次数。 然后往右走一格,左边有9个,顶部有4个。 在这种情况下,我需要计算匹配数组在同一行中包含9和4的次数。 超过1多,我会统计次数9和3出现在同一行。 如果我能做到这一行我会,但它是80行,这不是我想要做的。

我已经尝试了= countif(B1:D80,AND(I2,K1))和= countif(B1:D80,{“I2”,“K1”}),但它们要么出来0或错误。

任何帮助这样做将不胜感激!

我能想到的最简单的解决scheme是使用Sumproducts

让你的数组在B1:D5 (例如)

在第一个单元格中对应于9和9的input

 =SUMPRODUCT(($B$1:$B$5=$G2)*($C$1:$C$5=H$1))+SUMPRODUCT(($B$1:$B$5=$G2)*($D$1:$D$5=H$1))+SUMPRODUCT(($C$1:$C$5=$G2)*($D$1:$D$5=H$1)) + SUMPRODUCT(($B$1:$B$5=H$1)*($C$1:$C$5=$G2))+SUMPRODUCT(($B$1:$B$5=H$1)*($D$1:$D$5=$G2))+SUMPRODUCT(($C$1:$C$5=H$1)*($D$1:$D$5=$G2)) 

该公式有六个部分。 每个部分检查

如果左数字出现在第一列,(*)最高数字出现在第二列

或(+)

如果左边的数字出现在第一列,(*)最高的数字出现在第三列

或(+)

如果左边的数字出现在第二列,(*)最高的数字出现在第三列

或(+)

如果最上面的数字出现在第一列,(*)左边的数字出现在第二列

或(+)

如果最上面的数字出现在第一列,(*)左边的数字出现在第三列

或(+)

如果最上面的数字出现在第二列,(*)左边的数字出现在第三列

解决方案截图

对于3列,你可以使用这种方法

=SUMPRODUCT((($B$1:$B$80=K$1)+($C$1:$C$80=K$1)+($D$1:$D$80=K$1)>0)*(($B$1:$B$80=$I2)+($C$1:$C$80=$I2)+($D$1:$D$80=$I2)>0))

我假设如果I2 = K1您只需要包含该值的行数

您可以使用数组公式中的MMULTFREQUENCY函数获得相同的结果,这些函数可以更容易地扩展到具有多列的范围

=SUM((MMULT(($B$1:$D$80=K$1)+0,TRANSPOSE(COLUMN($B$1:$D$80)^1))>0)*(MMULT(($B$1:$D$80=$I2)+0,TRANSPOSE(COLUMN($B$1:$D$80)^1))>0))

要么

=SUM(IF((FREQUENCY(IF($B$1:$D$80=K$1,ROW($B$1:$D$80)),ROW($B$1:$D$80))>0)*(FREQUENCY(IF($B$1:$D$80=$I2,ROW($B$1:$D$80)),ROW($B$1:$D$80))>0),1))

都用CTRL + SHIFT + ENTER确认