2016-06-14 53 views
1

我有三列:ID,事件和月份。我需要根據ID獲得按月唯一的事件數。VBA:計數符合兩個條件的唯一值

到目前爲止,我每月有活動的計數(在五月例如,1806點獨特的登錄),使用COUNTIFS(範圍( 「B2:B276609」),事件名稱,範圍(C2:C76602" ),M)。)

如何過濾這個上面計正在使用這樣只有數內的唯一ID?請注意,我必須循環這個通過一束事件類型和月。

爲了使這更清晰,讓我提供一些示例數據:

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 
+0

該解決方案允許您從表中獲取的所有唯一值:http://stackoverflow.com/questions/1429899/getting-unique-values-in-excel-by-using-formulas-only如果您需要基於兩列的唯一*值,那麼您可以(1)創建一個組合兩列的助手列,或者(2)在比較值的唯一性之前,將公式中的列與數組公式中的列組合。 – Ralph

+0

你有沒有vba的方式做到這一點?如果是的話,你有什麼版本的Excel? – chungtinhlakho

+1

這是一個簡單的聚合SQL查詢,它可以**在Excel VBA中運行,並在當前工作簿上調用ADO。沒有嵌套循環或者如果/然後條件需要。 – Parfait

回答

1

您可以使用Excel的內置remove duplicates功能。

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

是的!不敢相信我沒有想到做這個簡單的前置步驟。 – ysrome

1

基於其可以在這裏找到here在拉爾夫的評論的鏈接,你可以獲得:

要知道你有多少獨特的項目有您可以使用此規則公式:

=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))