在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))
AccountName
和SignUpDay
应该只引用现有的数据范围(无空格)。 如果有空白,则需要更复杂的公式。 如果您使用表格和结构化地址,名称可以自动调整。
此外,该公式假定相同的帐户不会在一天内注册。 如果情况可能如此,则需要更复杂的公式。
例如:
=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,所以这不是可能性。