在Microsoft Excel中,如何根据同一个表的另一列中的值计算范围(列的一部分),将结果返回到Array表单中以供其他函数进一步处理?
在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”仅在第一个日期计算一次(“不同”),但在第二个日期仍然会再次计算。
我已经有一个表达式可以为整个表做正确的事情,
=SUM(N(FREQUENCY(Box,Box)>0))
其中“Box”是第一个表的命名范围,由整个Box列组成。 (使用与数据相同的范围/数组/列表和FREQUENCY的容器是Excel帮助中实际包含的一个令人费解的微妙技巧,但是 - 唉! - 没有充分解释。)
但我想要(几个)子集,每个日期一个。我想扩展我的“SUM(N(FREQUENCY ...)表达式,仅对第一个表的行进行操作,其中Date列与正在计算的行的Date列匹配。也就是说,再次使用SQL,
SELECT count(DISTINCT t1.Box), t2.Date
FROM `t1` JOIN `t2` ON (Date)
GROUP BY Date
我甚至可以构建一个有趣值的数据透视表(它会让我在其单元格中计数),然后使用并行的,日期索引的
列=COUNTIF(…)
将每行计数减少到该日期的单个唯一计数。但是这需要我更新数据透视表以注意基表中的新数据,然后拖动扩展答案列以包含新日期(或者遭受丑陋的值错误标记)。所以一些更自动,更简洁的手册,会很甜蜜。