检索excel中的唯一计数

时间:2016-08-10 21:55:51

标签: excel excel-formula excel-2010

我正在寻找一个公式来计算给定日期的注册数量。我的输入数据基于事件日志,看起来像这样:

AccountName | SignUpDay | EventLogged

acct1 | 2016年6月1日| 2016年6月1日

acct1 | 2016年6月1日| 2016年6月5日

acct2 | 2016年6月1日| 2016年6月2日

acct3 | 2016年6月1日| 2016年6月4日

acct3 | 2016年6月1日| 2016年6月6日

acct4 | 2016/03/03 2016年6月6日



以上是虚拟数据。但是我可以说我的输入数据有10k行。对于我的输出,在特定日期,我想查看输入数据并返回该特定日期的注册数量。我想要实现的是这样的:

SignUpDay |计数

06/01/2016 | 3

06/02/2016 | 0

06/03/2016 | 1

我知道我可能会在R中做这样的事情,但我正在我现在所做的工作中,这是优秀的。任何人对如何实现这一点都有任何想法?

2 个答案:

答案 0 :(得分:1)

使用Excel的FREQUENCY()和数组公式:

假设

  • 您的工作表在A2:A100
  • 中设置了帐户名称
  • 您的SignupDates存储在B2:B100
  • 您要分组的当前日期为F2

然后输入:    =SUM(IF(FREQUENCY(MATCH(IF(B$2:B$100=F2,A$2:A$100,""),IF(B$2:B$100=F2,A$2:A$100,""),0),MATCH(IF(B$2:B$100=F2,A$2:A$100,""),IF(B$2:B$100=F2,A$2:A$100,""),0))>0,1))-1

并按CTRL + SHIFT + ENTER将其作为数组公式输入。

enter image description here

答案 1 :(得分:1)

使用您的序列日期列表,例如F2:Fn,您可以尝试数组输入公式:

G2:  =SUM(1/COUNTIF(AccountName,AccountName)*(SignUpDay=F2))

AccountNameSignUpDay应仅参考现有数据范围(无空格)。如果有空白,则需要更复杂的公式。如果您使用带有结构化寻址的表格,名称可以自动调整。

此外,该公式假设同一帐户不会在一天以上注册。如果可能出现这种情况,则需要更复杂的公式。

例如:

=SUM(1/COUNTIF(SignUpTable[[AccountName ]],SignUpTable[[AccountName ]])*(SignUpTable[ [ SignUpDay ] ]=F2))
输入后,

array-enter 一个公式 公式进入单元格或公式栏,按住  一边打。如果你这样做了 正确地说,Excel会在公式周围放置大括号 {...}

enter image description here

编辑:如果您的数据不符合上述限制条件,我会建议其中一个解决方案链接到@pnuts,在他的评论中,您可以在其中为数据添加一个额外的列公式:

=IF(SUMPRODUCT(($A$2:$A2=A2)*($B$2:$B2=B2))>1,0,1)

然后在“行”区域中构建一个带有SignUpDay的数据透视表,并在“值”区域中构建一个新列。数据透视表解决方案的一个缺点是,没有注册的日期将不会在表格中表示。

在Excel 2013+中,可以在“值”区域中生成“唯一计数”,但是您提到使用的是Excel 2010,因此不太可能。