【问题标题】:Pivot Table - Count unique values - Excel 2010数据透视表 - 计算唯一值 - Excel 2010
【发布时间】:2013-09-24 17:48:32
【问题描述】:
我在 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 个用户)。
有人知道这是怎么做到的吗?
【问题讨论】:
标签:
excel
count
pivot
unique
【解决方案1】:
您可以创建一个新列并添加公式:
=IF(COUNTIFS($A$2:A2,A2,$B$2:B2,B2)>1,0,1)
并以此列为中心:
【解决方案2】:
在描述中,我将使用您的桌子的图片(我不允许发布我的图片)。
首先按 Week 排序表格,然后按 Users 排序,然后在单元格 D2 中插入 =IF(AND(A3=A2,B3=B2),0,1) 。将公式复制到列中。在我使用的一张大学生表 A1:P141736 上,这个公式立即生效。
【解决方案3】:
难道不是另一种选择是连接两列然后删除重复项吗?使用 Jerry 帖子中的图片,步骤如下:
=CONCATENATE(A2," ",B2)
这应该为您提供第 2 行的结果“第 1 周 USER_A”,第 2 行的“第 1 周 USER_B”,依此类推。
- 在“数据”选项卡下,选择“突出显示重复项”
- 仅选择 D 列,然后单击确定
您现在应该能够只计算 A 列和 B 列的唯一实例。这就是我过去所做的;希望我没有以完全错误的方式做这件事! :-)
【解决方案4】:
由于您没有指定数据的来源。
我假设您的数据存储在 SQL 数据库中,可以使用分区计数或 row_number 分区计数来实现这些结果。
完成Jerry提供的解决方案,'Count of users'列可以通过SQL实现如下
case when row_number() over (partition by Week order by Users) = 1 then 1 else 0 end as [Unique?]
所以这实际上做了一点,首先按不同的周对结果集进行分区,对用户列进行排序,并为分区上的每一行分配一个顺序 ID。我们基本上过滤掉每个分区中的第 1 行。
如果数据不是来自 SQL,则忽略。