在Excel中检索唯一的计数

我正在创build一个计算给定date的注册数量的公式。 我的input数据是基于事件日志,看起来像这样:

AccountName | SignUpDay | EventLogged

acct1 | 06/01/2016 | 2016年6月1日

acct1 | 06/01/2016 | 2016年6月5日

acct2 | 06/01/2016 | 2016年6月2日

acct3 | 06/01/2016 | 2016年6月4日

acct3 | 06/01/2016 | 2016年6月6日

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

以上是虚拟数据。 但是让我们说,我有我的input数据10万行。 对于我的输出,给定一个特定的一天,我想查看input数据,并返回该特定日子的注册数量。 我想要达到的是这样的:

SignUpDay | 计数

06/01/2016 | 3

06/02/2016 | 0

06/03/2016 | 1

我知道我可能可以在R中做这样的事情,但我正在做我现在正在做的事情,这是很好的。 任何人有任何想法如何实现这一目标?

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

假设

  • 您的工作表使用A2:A100中的AccountNames进行设置
  • 您的注册date存储在B2:B100中
  • 你想要子集的当前date是在F2中

然后input: =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将其作为数组公式input。

在这里输入图像说明

用例如F2:Fn的连续date列表,你可以尝试这个数组input的公式:

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

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

此外,该公式假定相同的帐户不会在一天内注册。 如果情况可能如此,则需要更复杂的公式。

例如:

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

input公式,在将公式input到单元格或公式栏后,按住同时按下。 如果你这样做是正确的,Excel将把括号{...}放在公式的周围。

在这里输入图像说明

编辑:如果你的数据不符合上述约束条件,我会build议通过@pnuts连接到解决scheme之一,在他的评论中,在那里你添加一个额外的列到你的数据与公式:

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

然后在“行”区域中使用SignUpDay构build数据透视表,并在“值”区域中创build此新列。 数据透视表解决scheme的一个缺点是,零注册date不会在表中表示。

在Excel 2013+中,可以在“值”区域中生成“唯一计数”,但是您提到您正在使用Excel 2010,所以这不是可能性。