不,你不能这样做,COUNTIF
函数需要一个范围作为第一个参数 - 范围上的任何操作(如使用函数)都会将该范围转换为不接受MONTH
的数组COUNTIF
可能的替代方法是使用SUMPRODUCT
例如
=SUMPRODUCT((MONTH(range)=5)+0)
或者COUNTIFS
像这样
=COUNTIFS(range,">="&Z1,range,"<"&EOMONTH(Z1,0)+1)
其中 Z1 是要计算的月份的第一天,例如 2013 年 5 月 1 日
当然 SUMPRODUCT 版本不考虑年份(尽管您可以添加),而 COUNTIFS 则
解释
当SUMPRODUCT
您使用这样的表达式时MONTH(range)=5
,会返回一个值的“数组”,TRUE/FALSE
例如{TRUE;FALSE;FALSE;TRUE}
.... 但SUMPRODUCT
这里只对数字求和,所以我们需要一种方法将 TRUE 强制“强制”为 1,将 FALSE 强制为 0。您可以使用任何不改变值的数学运算,例如 +0, *1 或者你可以在前面添加 -- 像这样:
=SUMPRODUCT(--(MONTH(range)=5))
所以我们得到类似的东西
=SUMPRODUCT(--({TRUE;FALSE;FALSE;TRUE}))
……这就变成了
=SUMPRODUCT({1;0;0;1})
然后 SUMPRODUCT 将这些值相加得到 2,即 5 月的日期数。
SUMPRODUCT 优于SUM
纯粹是因为您不需要使用CTRL+ SHIFT+ “数组输入”公式ENTER
有关 SUMPRODUCT 的详细说明,请参见此处,它有很多用途