数据透视表 - 计算唯一值数量 - Excel 2010

5

我在Excel 2010中有一个基于网络输出的数据透视表。我希望每周用户在网络上发布的唯一值的数量。

我找到了这个话题:Simple Pivot Table to Count Unique Values,它会在我的数据中添加一个额外的列。问题是,我需要每周的唯一值,而不是整张表格的唯一值。

输入示例:

week 1 USER_A message1
week 1 USER_B message2
week 1 USER_A message3
week 2 USER_A message4
week 2 USER_B message5
week 2 USER_C message6

实际上,当我要求计算时,Excel会将第1周和第2周的计数都显示为3。我需要第1周的计数为2(因为有2个用户),第2周的计数为3(因为有3个用户)。

有人知道如何做到这一点吗?


请查看这个答案:https://dev59.com/kGct5IYBdhLWcg3wuPq6 - Jack
4个回答

8
你可以创建一个新的列并添加公式:
=IF(COUNTIFS($A$2:A2,A2,$B$2:B2,B2)>1,0,1)

并在此列上进行数据透视:

enter image description here


1

由于您没有指定数据来自何处。

我将假设您的数据存储在SQL数据库中,可以使用分区计数或行号分区计数来实现这些结果。

完成Jerry提供的解决方案后,可以从SQL中按如下方式获得“用户数量”列

case when row_number() over (partition by Week order by Users) = 1 then 1 else 0 end as [Unique?]

因此,这实际上做了更多的事情,首先通过不同的Week对结果集进行分区,对Users列进行排序,并为每个分区的每一行分配一个顺序ID。我们基本上过滤掉每个分区中的数字1行。

如果数据不来自SQL,则忽略。


1
另外一个选项是将两列连接起来,然后去除重复项。使用Jerry帖子中的图片,步骤如下:
- 插入D列 - 在D列中输入公式:
=CONCATENATE(A2," ",B2)
这应该会给你第二行的结果为“week 1 USER_A”,第二行的结果为“week 1 USER_B”,以此类推。
- 在“数据”选项卡下,选择“突出显示重复项” - 只选择D列,然后点击确定
现在,您应该能够仅计算A列和B列的唯一实例。这就是我过去所做的;希望我没有完全错了! :-)

0

在描述中,我将使用您的表格图片(我不允许发布我的图片)。 首先按排序表格,然后按用户排序,在单元格D2中插入=IF(AND(A3=A2,B3=B2),0,1)。复制公式到整列。在我使用的大型学生表格A1:P141736上,此公式可以立即工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接