VBA:计数符合两个标准的唯一值

我有三列:ID,事件和月份。 我需要通过ID唯一的月份得到事件的计数。

到目前为止,我已经使用CountIfs(Range(“B2:B276609”),EventName,Range(C2:C76602“),m))按月计算事件的计数(例如5月1806次唯一login)。

我如何过滤这个上面的计数,所以只有在该计数内的唯一ID正在使用? 请注意,我必须通过一系列事件types和月份来循环。

为了使这个更清楚,让我提供一些样本数据:

ID Event Month 1 Login May 16 2 click July 16 1 Save June 16 1 Login May 16 3 Save June 16 

从这我需要得到以下信息:

 1 unique login in May 16 2 unique saves in June 16 1 unique click in July 16 

您可以使用Excel的内置删除重复function。

 ActiveSheet.Range("A2:C76602").RemoveDuplicates Columns:=Array(1,2), Header:=xlYes 

基于在这里可以find拉尔夫的评论中的链接,你会得到:

要知道你有多less独特的物品,你可以使用这个正则expression式:

 =SUM(IF(FREQUENCY(COUNTIF(Colors,"<"&Colors),COUNTIF(Colors,"<"&Colors)),1)) 

然后我把它扩展到多列,只是将countif公式改为countifs。 (显然使用不同的范围)。

 =SUM(IF(FREQUENCY(COUNTIFS($A$1:$A$10,"<"&$A$1:$A$10,$B$1:$B$10,"<"&$B$1:$B$10),COUNTIFS($A$1:$A$10,"<"&$A$1:$A$10,$B$1:$B$10,"<"&$B$1:$B$10)),1))