Excel:如何计算一系列数据在同一行中包含两个值的次数

时间:2017-03-28 05:20:22

标签: excel

我有一系列包含匹配行的单元格,其中包含3个团队,每个团队在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或出错。

非常感谢任何有关这方面的帮助!

2 个答案:

答案 0 :(得分:0)

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

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

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

=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列

或(+)

如果左侧数字出现在第二列中,(*)顶部数字出现在第三列

或(+)

如果顶部编号出现在第一列中,(*)左侧编号出现在第二列

或(+)

如果顶部编号出现在第一列中,(*)左侧编号出现在第3列

或(+)

如果顶部编号出现在第二列中,(*)左侧编号出现在第三列

Solution Screenshot

答案 1 :(得分:0)

对于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

确认