我正在尝试使用COUNTIFS
和SUMPRODUCT
来计算所有行的特定范围内的日期的唯一文本数。
例如,我想计算二月份商品的唯一数量。
Date, Item Description, , Start, 2017-02-01
02/1/2017, abc, , End, 2017-03-01
03/2/2017, def
05/2/2017, abc
08/2/2017, def
01/3/2017, abc
05/3/2017, def
如果我指定这样的范围(即从第1行到第6行),它确实有效并返回2。
=SUMPRODUCT((($A1:$A6>=$E1)*($A1:$A6<$E2))/COUNTIFS($B1:$B6, $B1:$B6, $A1:$A6, ">="&$E1, $A1:$A6, "<"&$E2))
但是,如果我指定整列,它将无法工作并返回0。
=SUMPRODUCT((($A:$A>=$E1)*($A:$A<$E2))/COUNTIFS($B:$B, $B:$B, $A:$A, ">="&$E1, $A:$A, "<"&$E2))
请建议我如何解决这个问题呢?
使用FREQUENCY
的数组公式可能更有效,并且这种类型的公式可以处理空白行,因此您应该使范围足够大以满足当前数据和可能的未来扩展,例如对于第2行到第1000行中的数据,您可以使用如下的数组公式:
=SUM(IF(FREQUENCY(IF(A$2:A$1000>=E1,IF(A$2:A$1000<E2,MATCH(B$2:B$1000,B$2:B$1000,0))),ROW(B$2:B$1000)-ROW(B$2)+1),1))
用CTRL + SHIFT + ENTER确认
您可以使用动态命名范围,例如Dates
并将其输入公式中。然后它将仅评估所需的行数。不会有额外的豪华巴里houdini的答案,迎合范围内的空白细胞。
Ctrl + F3将打开名称管理器,您可以在那里单击> New
并输入Dates
作为名称,并使用以下公式的变量来表示Refers to:
=OFFSET(Sheet1!$A$2,0,0,COUNT(Sheet1!$A$2:$A$1048576),1)
$ A $ 1048576是2003年以上版本的Excel中的最后一行,之前是$ 65536。
=SUMPRODUCT(((Dates>=$E1)*(Dates<$E2))/COUNTIFS(OFFSET(Dates,,1,,1), OFFSET(Dates,,1,,1), Dates, ">="&$E1, Dates, "<"&$E2))