我正在尝试计算“每个月的停靠点数”,然后将它们放置在另一个表中,该表包含月头(数据格式)。
我在E5中尝试了许多公式:
错误消息如下:
有人有想法吗?
谢谢
答案 0 :(得分:1)
criteria_range
函数的COUNTIFS
参数通常需要为range
,而不是数组。因此,您的公式将失败。
您可以使用数据透视表。
Group Number
拖到行区域Date of Stop
拖到“列”区域Date of Stop
拖到“值”区域对于公式解决方案,可以使用SUMPRODUCT
。您必须排除第一行,或添加其他条件,因为文本输入将导致#VALUE!
错误
E5: =SUMPRODUCT(($A$2:$A$200=$D5)*(MONTH($B$2:$B$200)=MONTH(E$4)))
请注意,在结果表中,Date
行是实际日期,其格式设置为显示的样子。
或者,如果您的数据在表中,则可以使用结构化引用。
=SUMPRODUCT((Table1[[Group Number]:[Group Number]]=$D5)*(MONTH(Table1[[Date of Stop]:[Date of Stop]])=MONTH(E$4)))
作为练习,可以使用整个列引用,如下面的公式所示,进行测试以确保B列条目是日期。
但是,这将大大增加计算时间,并且效率很低。您最好通过以下方式避免这种情况:
Table
和结构化引用=SUMPRODUCT((IF(ISNUMBER(B:B),A:A,0)=$D5)*(MONTH(IF(ISNUMBER(B:B),B:B,0))=MONTH(E$4)))
由于这是一个数组公式,因此您需要在按下 enter 的同时按住 ctrl + shift 来“确认”它。如果操作正确,Excel将按照公式栏中的说明在公式周围放置括号{...}
答案 1 :(得分:0)
新代码。
认为我们必须对此公式使用EDATE。对于单元格(E5),请尝试以下操作。
=COUNTIFS($A:$A,"GRP "&RIGHT($D5,1),$B:$B,">="&E$4,$B:$B,"<"&EDATE(E$4,1))
基本上,EDATE使您可以提前提前几个月获得相同的日期(例如每月的1号)。在这种情况下,我们将EDATE提前设置为1个月。