可以使用COUNTIF与范围值的函数?

假设我有一个从A1开始的date列表,

1/3/2014 2/5/2014 5/5/2015 8/10/2016 ...

我想统计一个月内出现在这个范围内的次数。 我目前的解决scheme是,它下面的行只包含=MONTH(x1) ,其中x是列,然后我调用该行上的COUNTIF。

我不认为这是一个解决scheme如此糟糕,但它需要一大堆额外的单元格来计算我的电子表格中的月份,而这对于其他任何事情都是不必要的。

那么基本上,有什么办法可以按照= COUNTIF(MONTH(range),5)的行来计算,例如5月份发生的事情的次数?

不,你不能这样做, COUNTIF函数需要一个范围作为第一个参数 – 范围上的任何操作(如使用MONTH函数)将该范围转换为COUNTIF不接受的数组

可能的select是使用SUMPRODUCT例如

=SUMPRODUCT((MONTH(range)=5)+0)

或者像这样的COUNTIFS

=COUNTIFS(range,">="&Z1,range,"<"&EOMONTH(Z1,0)+1)

其中Z1是本月的第一天,例如2013年5月1日

当然,SUMPRODUCT版本并不考虑年份(尽pipe你可以添加),而COUNTIFS也可以

说明

SUMPRODUCT当您使用像MONTH(range)=5这样的expression式时,会返回TRUE/FALSE值(如{TRUE;FALSE;FALSE;TRUE} MONTH(range)=5的“数组”,但SUMPRODUCT仅将数字相加,所以我们需要一种方法以“cocecece”TRUE为1,FALSE为0.您可以使用任何不会更改值的math运算(例如+0,* 1)或者可以像这样添加到前面:

=SUMPRODUCT(--(MONTH(range)=5))

所以我们得到类似的东西

=SUMPRODUCT(--({TRUE;FALSE;FALSE;TRUE}))

…变成了

=SUMPRODUCT({1;0;0;1})

然后SUMPRODUCT将这些值相加得到2,即5月份的date数。

SUMPRODUCT是首选的SUM纯粹是因为您不需要“数组input”的公式与CTRL + SHIFT + ENTER

在这里看到SUMPRODUCT的一个很好的解释,它有很多用途