根据另一列计算一列中的重复单元格

Count duplicate cells in a column based on another column

示例数据:

Event    Client
 400      1
 400      1
 401      1
 402      2
 402      2
 402      2
 400      3
 401      3
 402      3
 403      3

这 table 表示每行一张活动门票。我试图确定客户参加了多少活动(但我不关心他们购买了多少活动门票)。我想要得到的结果:

Client 1: 2 events
Client 2: 1 event
Client 3: 4 events

我可以编写一个 Python 脚本来确定此信息,但我觉得可能存在一个 Excel 函数,我可以使用它来获得相同的结果。

建议?

突出显示您的整个数据集,然后按 "alt",然后按 "a",然后按 "m"。这将删除重复的条目,然后 countif(B:B, B1) 将计算该特定客户编号的条目数。

Countif(B:B,1) 将适用于客户端 1 Countif(B:B,2) 将适用于客户端 2

但是,如果您引用它们将位于的单元格(B1 及以下),然后向下拖动您的公式,它将自动运行。

在 Excel 2013 年可能最简单,但在 Excel 2007 年使用数据透视表仍然很容易:

和一个带有公式的辅助列:

=COUNT(E3:H3)   

如果有人对自动更新的解决方案感兴趣,只需在 table 中列出唯一客户端 ID(例如使用 =ROW()-1 公式)并使用以下公式计算唯一事件的数量:

=SUMPRODUCT(
  N(EC[Client] = [@Client]),
  1 / COUNTIFS(EC[Event], EC[Event], EC[Client], EC[Client]))

其中:

  • EC 是您的 Event_Client table 的名称,[@Client] 是您 Unique_Clients table 当前行中的一个单元格
  • N 是一个 Excel 函数,用于将布尔值转换为 0/1
  • 1/COUNTIFS(col1,col1, col2,col2)count unique rows 的一个技巧 - 它会产生一个数组
  • SUMPRODUCT 用于避免必须使用数组公式