如何为某些用户计算列中的相同值

时间:2013-05-13 16:27:46

标签: excel excel-formula

我有一个列显示不同的用户和另一个显示值的列。每个用户可以拥有其中的几个值,并且可以重复这些值。我知道如何在同一列中计算相同的值,但我需要知道每个用户的相同值的数量。例如:

  USER            VALUE
 User1            100
 User1            300
 User1            100
 User1            200
 User1            300
 User1            100
 User1            100
 User1            400
 User2            100
 User2            100
 User2            100
 User2            400
 User2            100
 User2            200
 User2            200

然后它应该显示为:

 USER          VALUE     COUNT
User1          100         4
User1          200         1
User1          300         2
User1          400         1

与第二个用户相同,依此类推。

编辑 - 抱歉,我误解了我必须做的事情...我有更多的价值观,虽然我只需要专注于一个值,但显然我必须考虑所有这些:所以我需要的是以下:

  USER       V1      V2     V3     V4
  user1      A       C      A       B
  user2      B       D      A       B
  user1      A       F      A       C
  user3      C       A      C       D
  user3      D       B      A       A

user1

应该出现什么
   user1

    V1
    A       2
    B       0
    C       0
    D       0

    V2
    A       1
    B       0
    C       0
    D       0
    E       0
    F       1

    V3
    A       2
    B       0
    C       0
    D       0

    V4
    A       0
    B       1
    C       1
    D       0

有什么想法吗?无论如何,谢谢你的帮助!

2 个答案:

答案 0 :(得分:2)

修改

根据原始海报中的新数据结构添加了以下新答案。

所以必须要做一些事情才能让它发挥作用。我建议将您的数据范围转换为表格。它使动态列和值引用变得容易。突出显示您的数据范围并按CTRL + T.

现在说你的数据在Cell A1:E6就像你上面的那样

表1 = A1:E6 =

USER    V1  V2  V3  V4
user1   A   C   A   B
user2   B   D   A   B
user1   A   F   A   C
user3   C   A   C   D
user3   D   B   A   A
  • 在单元格F2中输入
  • =IFERROR(INDEX(Table1[USER],MATCH(0,INDEX(COUNTIF($F$1:F1,Table1[USER]),0,0),0)),"-")
  • 这将返回“USER”列中的第一个唯一身份用户。显示 其余只需向下拖动即可复制F2下方单元格中的公式。
  • 然后在单元格G2中,我创建了一个范围为F2:F4的下拉列表,这是所有唯一用户。
  • 在单元格G3中,我创建了一个范围B1:E1的下拉列表,它是所有Headers V1,V2 ......
  • 在单元格G4中输入
  • =IFERROR(INDEX(INDIRECT("Table1["&$G$3&"]"),MATCH(0,INDEX(COUNTIF($G$3:G3,INDIRECT("Table1["&$G$3&"]")),0,0),0)),"-")
  • 您可以将此公式复制到其下方的单元格,直到您看到“ - ”表示“V1”列没有更多唯一值
  • 在单元格H4中输入
  • =COUNTIFS(Table1[USER],$G$2,INDIRECT("Table1["&$G$3&"]"),G4)

这将给你一些看起来像这样的东西......希望它有所帮助,

Unique Users Unique Values Unique count 2

结束编辑

第一个答案......

以下是使用Cell Formulas的方法。

  • A:A中带标题的用户范围
  • B中带标题的值范围:B
  • 范围A:B按用户排序,然后按值
  • 排序
  • 在D1中:F1键入新标题,唯一身份用户,唯一值,用户值计数。
  • 有三个公式,每列一个。
  • D2 = =INDEX(A:A,ROW($F$2)+SUM(F$1:F1))
  • E2 = =INDEX(B:B,ROW($F$2)+SUM(F$1:F1))
  • F2 = =COUNTIFS(A:A,D2,B:B,E2)

使用第二行中的这三个,您现在应该能够向下拖动公式以填充列表,越来越多地显示唯一用户及其唯一值以及这些值的计数。如果公式返回零,则表示您位于唯一数据的末尾。

-Scheballs

编辑 - 错字,谢谢杰瑞

Unique Users Unique Values Unique count

答案 1 :(得分:1)

如果你可以使用数据透视表,那么你可以这样做:

  • 选择范围(例如整个表格)
  • 转到Insert> Insert PivotTable> OK
  • 拖动“行标签”框中的字段UserValueValue框中的Values

在数据透视表菜单的Report Layout > Tabular Form窗格中进行一些格式化(Do not show subtotalsDesign)后,您会看到:

enter image description here

然后,您可以在另一张表中复制/粘贴所需的内容,以进行更多数据处理。 您无法直接修改数据透视表中的数据。


如果您已准备好使用UserValues的表格,并且只需要获取计数,那么您可以在单元格C2中使用COUNTIFS

=COUNTIFS(Sheet1!A:A,Sheet2!A2,Sheet1!B:B,Sheet2!B2)

此公式假定第一个工作表名为Sheet1,而包含要填充的表的工作表名为Sheet2