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

问题描述 投票:0回答:2

我正在尝试使用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))

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

excel unique countif
2个回答
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确认


1
投票

您可以使用动态命名范围,例如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))
© www.soinside.com 2019 - 2024. All rights reserved.