繁体   English   中英

选择表的子集进行进一步处理

[英]Select a subset of a table for further processing

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

在SQL中,我的意思是“从表WHERE field2 = value中选择SELECT1。

选定的结果将(两次)馈送到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(…)

以减少该日期的每一行计数到唯一身份计数。 但这需要我更新数据透视表以注意到基表中的新数据,然后拖动-扩展答案列以包括新日期(或使用难看的值错误标记)。 因此,更自动化,更省力的手动操作会很不错。

我想在您询问时不可用,但Excel 2013在数据透视表中将“不重复计数”作为一个选项:

SO12135410示例

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM