如何使用多个条件仅计算表中值的唯一出现次数?

时间:2015-06-04 19:37:08

标签: excel excel-2013

我正在尝试计算在指定时间范围(1个月,3个月,6个月,1年)内登录的每个角色(管理员,mod,一般用户等)的用户百分比。编辑我从中拉出的数据表不是一个选项,因为这个电子表格应该是自我计算的(如果这是有意义的)。现在我只需要数字,因为计算%应该很简单。

我使用的列是id,eventTime,ScreenName和userGroup。

例如,我想计算来自userGroup" admin"的用户数量。在上个月内登录。使用ScreenName因为它是唯一的和evenTime因为y ..我提取的数据记录了用户在网站上看到的每个页面的时间,用户名,用户组和页面名称,因此用户可能有几个同一天的参赛作品。

到目前为止我写的代码:

=SUMPRODUCT(((data!$B:$B>(TODAY()-30))*(data!$B:$B<=TODAY()))*(data!$G:$G=G$1))

&#39;数据&#39;是我试图计算的表格。

以下是一些有用的伪代码:

SUMPRODUCT((eventTime>30 days ago)*(evenTime<todays date))*(userGroup = referenced userGroup))

如果我以管理员身份登录并继续查看网站上的七个页面,则数据将有七个不同的行存储页面/时间/ myusername / myrole数据。上面的等式计算我的用户名弹出的每个单独实例,而不是已登录的用户数。我想让它返回&#34; 1&#34;因为那个月只有一个用户登录,即使他们查看了几个页面。但这个等式正在回归&#34; 7&#34;。

TL:DR我尝试列出指定时间范围内的活跃用户数。我的配方是一个月。但我需要的是它只计算一次唯一的screenName /每个屏幕名称。

Example of what the data looks like that I'm pulling from

1 个答案:

答案 0 :(得分:2)

如果您有一个所有ScreenNames的列表(仅列出一次,名为ScreenNamesList),那么最简单的方法就是这样,假设ScreenNames位于A列中:

=SUMPRODUCT((COUNTIFS(data!$B:$B,">"&TODAY()-30,data!$B:$B,"<="&TODAY(),data!$G:$G,G$1,data!$A:$A,ScreenNamesList)>0)+0)

....但是如果你没有这样的列表,那么你可以使用这个公式 - 减少音符范围,整列将非常慢:

=SUM(IF(FREQUENCY(IF(data!$B$2:$B$1000>TODAY()-30,IF(data!$B$2:$B$1000<=TODAY(),IF(data!$G$2:$G$1000=G$1,MATCH(data!$A$2:$A$1000,data!$A$2:$A$1000,0)))),ROW(data!$A$2:$A$1000)-ROW(data!$A$2)+1),1))

公式需要用 CTRL + SHIFT + ENTER

确认
相关问题