关于在 Excel 中使用 Subtotal 和 CountIf 的新手问题

关于在 Excel 中使用 Subtotal 和 CountIf 的新手问题

我正在使用 Excel,在使用时遇到了一些问题Countif,我不明白它与 有何不同SubTotal。我使用 GUI 对内容进行小计,所有小计都是正确的。然后我尝试使用 来Countif查看通过了多少要求。这仅适用于第一个小计。很容易看出原因。当我查看小计框时,它显示:

=SUBTOTAL(3,C286:C292)

当我查看通过要求的公式时,我发现:

=IF(ISTEXT(A285),COUNTIF(C286:C338,"=Passed"),"")

请注意,最后一列是错误的。 Subtotal 是如何保持这一列正确的?我输入了通过要求的公式并将其拖到页面下方。一切都按预期运行(甚至连ISTEXT尽职尽责地找出哪一行是哪一行的部分也是如此),但最后一行是错误的。

有任何想法吗?

SRS Maintenance Count   7   44  
SRS Maintenance Passed              
SRS Maintenance Passed              
SRS Maintenance Passed              
SRS Maintenance Passed              
SRS Maintenance Passed              
SRS Maintenance Passed              
SRS Maintenance Passed              
SRS Reports Count   12  43  
SRS Reports Passed              
SRS Reports Passed              
SRS Reports Passed              
SRS Reports Passed              
SRS Reports Failed              
SRS Reports Passed              
SRS Reports Passed              
SRS Reports Failed              
SRS Reports Passed              
SRS Reports Passed              
SRS Reports Failed              

答案1

SubTotal()函数实际上只是使用CountA()函数(由您传递给它的“3”指定) 来计算指定范围。此函数将计算任何不为空的单元格 (无论它包含什么)。它得到正确总数的唯一原因是所有这些条目恰好都是“通过”。尝试将其中一个值更改为“SRS 维护失败”,您将看到总数没有变化。

你的语句有问题If()。你实际上不需要将语句If()与语句一起使用CountIf()。语句的逻辑CountIf()是:“如果单元格与我指定的值匹配,则对其进行计数“。因此下面的语句将会起作用。

=CountIf(C286:C292, "SRS Maintenance Passed")

该语句的问题CountIf()在于您只能指定一个要匹配的术语。因此,您需要两个单独的“小计”来获取已通过的报告和已通过的维护的值。

=(CountIf(C286:C292, "SRS Maintenance Passed") + (CountIf(C286:C292, "SRS Reports Passed"))

相关内容