1

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

在 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”仅在第一个日期计算一次(“distinct”),但在第二个日期仍会再次计算。

我已经有一个表达式可以为整个表格做正确的事情,

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

其中“Box”是第一个表的命名范围,由整个 Box 列组成。(使用与数据相同的范围/数组/列表和 FREQUENCY 的 bin 是 Excel 帮助中实际包含的一个非常微妙的技巧,但是 - 唉! - 没有得到充分的解释。)

但我想要(几个)子集,每个日期一个。我想扩展我的 "SUM(N(FREQUENCY..."

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

我什至可以建立一个有趣值的数据透视表(它让我在其单元格中计数),然后使用一个并行的、日期索引的列

=COUNTIF(…)

将每一行的计数减少到该日期的一个唯一计数。但这需要我更新数据透视表以注意基表中的新数据,然后拖动扩展答案列以包含新日期(或遭受丑陋的值错误标记)。因此,更自动、更少繁琐的手动操作会很不错。

4

1 回答 1

1

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

SO12135410 示例

于 2015-10-04T23:48:44.807 回答