答案1
您可以使用 COUNTIFS 公式。它允许您指定多个条件。使用 pat2015 的示例,如果数据在范围 A3:J8 中,则公式应为
=COUNTIFS(A3:J7;"Math";A4:J8;"1a")
(请注意标准之间的一行偏移)
答案2
答案3
答案4
=COUNTIFS(F3:K11, "Math", F4:K12, "1a")
已经由惠誉496,是一个好的开始。(注意:有些语言环境使用;
来分隔函数参数;其他语言环境使用,
。)它有一个可能的问题:它将计算“Math”在偶数行,而“1a”在其下方的奇数行的单元格对。(虽然问题没有提到这个问题,但插图表明不应该计算这样的对。)
为了解决这个问题,我首先将上述公式转换成产生相同结果的公式,但使用SUMPRODUCT
:
=SUMPRODUCT(--(F3:K11="Math"), --(F4:K12="1a"))
这里我们使用了标准技巧,即在布尔表达式前面加上 ,--
将 TRUE 变成 1,将 FALSE 变成 0,并使用 的SUMPRODUCT
隐式乘法作为逻辑与。然后我将其扩展为
=SUMPRODUCT(--(F3:K11="Math"), --(F4:K12="1a"), --(MOD(ROW(F3:K11),2)=1))
测试“Math”是否出现在奇数行(MOD(ROW(…),2)=1
)。这失败了,因为 Excel 似乎将其视为ROW(F3:K11)
与相同ROW(3:11)
,生成一个由 9 个值组成的线性数组,而不是由 54 个值组成的矩形数组。(恕我直言,这是 Excel 中的一个错误。)我发现我可以通过强制它考虑列,然后忽略它们来解决这个问题:
=SUMPRODUCT(--(F3:K11="Math"), --(F4:K12="1a"), --(MOD(ROW(F3:K11)+0*COLUMN(F3:K11),2)=1))
它计算每个单元格的列号(COLUMN(…)
),然后将其乘以 0。这样就行了。下图与问题中 OP 的数据相同,但在单元格 J8
和 中添加了“Math”和“1a” J9
。
fitch496的 COUNTIFS
公式(我将其放在我的答案的顶部)和我的简单SUMPRODUCT
公式都计算了这个未对齐的“Math 1a”并得出总数 3;我的最终SUMPRODUCT
公式忽略了未对齐的“Math 1a”并得出总数 2。
我的公式可以稍微简化一下:
--(MOD(row number,2)=1)
取行号模 2 并测试它是否等于 1。如果是,比较测试结果为 TRUE,然后通过 将其转换为 1。--
如果不是 1,则一定是 0;与 1 的比较结果为 FALSE,然后通过 将其转换为 0。--
我们可以省去逻辑运算(测试质量然后应用于--
布尔结果),只需使用。MOD(row number,2)
--(Boolean)
就是。最内层将 TRUE 转换为 1,将 FALSE 转换为 0,但随后它将 1 转换为 −1。然后外层将 −1 转换回 1。由于我们取两个因数的乘积,外层相互抵消,因此我们可以忽略它们。-(-(Boolean))
-
-
--
-
因此,最终的简化公式是
=SUMPRODUCT(-(F3:K11="Math"), -(F4:K12="1a"), MOD(ROW(F3:K11)+0*COLUMN(F3:K11),2))