使用Google电子表格中的过滤数据计算列中的唯一值

时间:2013-06-14 01:29:36

标签: excel count filtering unique google-sheets

以此电子表格为例:

https://docs.google.com/spreadsheet/ccc?key=0AoSVxswDPXtwdE5HcGZ4Y0lsMlZtZmFHRjZTcnpGS0E&usp=sharing

数据是这样的:

Date              Week          Project
3-jan-2013         1-2013       Project 1
4-jan-2013         1-2013       Project 1
5-jan-2013         1-2013       Project 1
6-jan-2013         1-2013       Project 1
18-abr-2013       16-2013       Project 2
19-abr-2013       16-2013       Project 2
22-abr-2013       17-2013       Project 2
24-abr-2013       17-2013       Project 2
25-abr-2013       17-2013       Project 2
26-abr-2013       17-2013       Project 2
29-abr-2013       18-2013       Project 2
30-abr-2013       18-2013       Project 2
1-mai-2013        18-2013       Project 2
3-mai-2013        18-2013       Project 2
4-mai-2013        18-2013       Project 2
6-mai-2013        19-2013       Project 2
7-mai-2013        19-2013       Project 2
8-mai-2013        19-2013       Project 2
9-mai-2013        19-2013       Project 2
10-mai-2013       19-2013       Project 2
7-jan-2013         2-2013       Project 1
8-jan-2013         2-2013       Project 1
16-mai-2012       20-2012       Project 1
17-mai-2012       20-2012       Project 1

我认为SUBTOTAL可以处理这个问题,但它不适用于开箱即用的唯一值...

我在列Project中有一个过滤器,其中选择了Project 2。在单元格C2中,我希望4报告=COUNTUNIQUE(C4:C)。它正在报告7,也就是说,它正在考虑列C中忽略过滤器的所有值。如果我在过滤器中选择Project 1,则应报告3,最后如果选择了所有项目,则应报告7

对于Project 2,有4个唯一的周值:

16-2013
17-2013
18-2013
19-2013

对于Project 1,有3个唯一的周值:

 1-2013
 2-2013
20-2012

如何使用过滤后的数据实现COUNTUNIQUE

1 个答案:

答案 0 :(得分:2)

如果没有帮助栏,我恐怕没有办法实现这一点(如果你愿意,可以隐藏它)。

例如,在E4中:

=ArrayFormula(IF(LEN(D4:D);MMULT((ROW(D4:D)>TRANSPOSE(ROW(D4:D)))*(D4:D=TRANSPOSE(D4:D))*(C4:C=TRANSPOSE(C4:C));SIGN(ROW(D4:D)))=0;IFERROR(1/0)))

然后在C2中你可以调用:

=SUBTOTAL(9;E4:E)