基于另一列计算列中的重复单元格

样本数据:

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

此表代表每行事件的一张票。 我试图确定一个客户参加了多less个活动(但是我不在乎他们为一个活动购买了多less个活动)。 我试图得到的结果是:

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

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

build议?

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

Countif(B:B,1)将为客户端1工作Countif(B:B,2)将为客户端2工作

但是,如果你参考他们将在(B1和以下)的单元格,然后拖下你的公式,它会自动工作。

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

SO28993685的例子

和一个配方的帮手列:

 =COUNT(E3:H3) 

如果有人对自动更新的解决scheme感兴趣,只需在表中列出唯一的客户端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)是计算唯一行的技巧 – 它会产生一个数组
  • SUMPRODUCT用于避免必须使用数组公式