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

时间:2015-03-11 17:42:28

标签: excel excel-formula excel-2007 pivot-table countif

示例数据:

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

此表表示每行事件的一张票证。我正在尝试确定客户参加了多少活动(但我不在乎他们为活动购买了多少张门票)。我想要的结果是:

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

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

建议?

3 个答案:

答案 0 :(得分:2)

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

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

但是如果你引用他们将在(B1及以下)的单元格,然后向下拖动你的公式它将自动工作。

答案 1 :(得分:1)

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

SO28993685 example

和一个公式为:

的辅助列
=COUNT(E3:H3)   

答案 2 :(得分:0)

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

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

其中:

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