COUNTIFS和SUMPRRODUCT用于所有行的日期范围内的唯一文本

时间:2018-01-01 15:34:25

标签: excel unique countif

我正在尝试使用COUNTIFSSUMPRODUCT来计算所有行在特定范围内的日期的唯一文本数。

例如,我想计算二月份物品的唯一数量。

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))

请建议我如何解决这个问题呢?

2 个答案:

答案 0 :(得分:1)

您可以使用动态命名范围,例如Dates并将其输入公式中。然后它将仅评估所需的行数。不会有额外的豪华barry houdini的答案,它适合该范围内的空白细胞。

Ctrl + F3 将打开名称管理器,您可以点击&gt; 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))

答案 1 :(得分:1)

使用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