-
1 # EXCEL資料處理與分析
-
2 # 套路Excel
Excel裡是沒有去重複計數的函式。
但去重複計數,從來就不是什麼大問題。
如下圖,對A1:A6單元格去重複計數。
要理解這個函式組合,也十分容易。
COUNTIF(A1:A6,A1:A6)理解理解為:對A1:A6中每個單元格都進行計數,AS計數為1,DSD計數為2.....依次類推,得出:{1;2;2;1;2;2},也就是如下圖中輔助列這樣的結果:
得出{1;2;2;1;2;2}這個結果後,再用1/{1;2;2;1;2;2},這樣返回結果:
{1;0.5;0.5;1;0.5;0.5},也就是重複幾次就變成幾分之一,重複1次就1/1,重複2次就是1/2,透過這樣轉換,將重複次數都分成1/重複次數;重複幾次就分成幾份,合起來就是1。
然後用SUMPRODUCT函式求和,消除了重複次數的影響。得出去重複後的結果。
上面只是單純的去重計數。如果需要按條件去重統計,則可以使用下面的自定義函式:
單條件不重複計數:
Function getdiscount(rng1 As Range, rng2 As Range, rng3 As Range)Dim arr, brr, s, d As Object, i&, k&Set d = CreateObject("scripting.dictionary")arr = rng1.Valuebrr = rng2.Values = rng3.Valuek = 0For i = 1 To UBound(arr)If arr(i, 1) = s ThenIf Not d.exists(s) Thenk = k + 1d(s) = brr(i, 1)ElseIf InStr(d(s), brr(i, 1)) = 0 Then d(s) = d(s) & "," & brr(i, 1): k = k + 1End IfEnd IfNextIf k = 0 Thengetdiscount = ""Elsegetdiscount = kEnd If"如條件出錯不處理也可以是getdiscount = k,k=0Set d = NothingEnd Function
使用方法可看我的回答。
https://www.wukong.com/question/6590332823037542670/
此外,去重複計數,應用輔助列的方法,將更加簡單強大。
輔助列公式為:=COUNTIF(A$1:A1,A1)
然後用sumif或者countif函式統計輔助列為1的求和或計數。
又如,單條件進行不重複計數。
輔助列公式如下:=COUNTIFS(A$2:A2,A2,B$2:B2,B2)
然後使用countifs函式計數即可。
函式公式為:=COUNTIFS(A2:A7,E2,C2:C7,1)
當然,不重複計數還可以使用資料透視表--非重複計數來實現。
建立透視表時,勾選載入到資料模型。
預設是沒有去重複計數的。
滑鼠右鍵--值欄位設定
選擇非重複計數即可。
更多不重複計數的內容,視乎實際情況而選擇用合適的方法。
回覆列表
有是有,不過不是在excel裡,在Power Pivot用DAX函式就可以
你可以用countrows(values([列]))
來計算不重複VALUES函式就是去除重複的函式