select一个表的子集进行进一步处理

在Microsoft Excel中,如何根据同一表的另一列中的值计算范围(列的一部分),并将结果返回到数组forms以供其他函数进一步处理?

在SQL中,我的意思是“SELECT field1 FROM table WHERE field2 = value”。

所选结果将被馈送(两次)到FREQUENCY(),以计算“field1”中不同条目的数量。 那就是:给定一个像这样的现有表:

Box Date 1 07/01/12 13 07/01/12 13 07/01/12 27 07/18/12 13 07/18/12 55 07/18/12 

我想要这样产生一个结果表:

 Boxes Date 2 07/01/12 3 07/18/12 

请注意,“13”仅在第一个date(“不同”)中计数一次,但在第二个date中仍然计数。

我已经有了一个expression,为整个表做正确的事情,

 =SUM(N(FREQUENCY(Box,Box)>0)) 

“Box”是第一个表的命名范围,由整个Box列组成。 (使用与数据相同的范围/数组/列表作为FREQUENCY的数据和分档是Excel助手中实际包含的一个微妙的技巧,但是 – 唉! – 没有足够的解释。)

但我想要(几个)子集,每个date一个。 我想扩展我的“SUM(N(FREQUENCY …)”expression式,只对第一个表的Date行与被计算的行的Date列匹配的行进行操作,也就是再次求助于SQL,

 SELECT count(DISTINCT t1.Box), t2.Date FROM `t1` JOIN `t2` ON (Date) GROUP BY Date 

我甚至可以build立一个有趣值的数据透视表(它让我在自己的单元格中计数),然后使用一个平行的date索引列

 =COUNTIF(…) 

将每一行的计数减less到该date的唯一计数。 但是这需要我更新数据透视表来注意基表中的新数据,然后拖动答案的列以包含新的date(或遭受丑陋的值错误标记)。 所以,更自动的,不那么繁琐的手动,将是甜蜜的。

我猜在你问的时候不可用,但Excel 2013在数据透视表中有一个选项Distinct Count:

SO12135410的例子