前段時間到一家制造型企業(yè)培訓Excel,下課休息的時候,學員小Z向我咨詢實際工作中的一個問題,以下是小Z的問題:
表格有8000行數(shù)據(jù)(即8000個項目),其中一列的字段為合同編號,表格中部分項目有填寫合同編號,部分項目沒填。由于一個合同簽訂的項目包含若干個(即8000個項目中有重復的合同編號),如何知道這8000個項目里面有多少個合同(不重復)?
曾經(jīng)嘗試用顯示重復值功能,然后通過篩選,能顯示沒重復的數(shù)據(jù)(包含合同編號那列為空白格),然后通過右下角的“計數(shù)”顯示到最終想要統(tǒng)計的合同數(shù)。但想知道更方便準確的方法。
簡單來講,小Z就是要實現(xiàn)對一組包含重復項的數(shù)據(jù)進行非重復計數(shù)。按照小Z現(xiàn)在的方法,先篩選再查看右下角的計算結(jié)果,顯然非常不智能。如果數(shù)據(jù)更新了,每次都要重復這個動作來查看計數(shù)的結(jié)果。想要動態(tài)得到最新的無重復的計數(shù)結(jié)果,可以利用以下的2個方法來實現(xiàn)。
1?函數(shù)法
比如下圖所示的這個銷售明細的表格中,“公司名稱”中的數(shù)據(jù)包含有大量的重復的數(shù)據(jù),如果現(xiàn)在我想統(tǒng)計客戶數(shù)量以及每個地區(qū)的客戶數(shù)量,就要進行非重復計數(shù)。
場景1:統(tǒng)計客戶數(shù)量?
使用公式:=SUMPRODUCT(1/COUNTIF(C2:C15,C2:C15))
先用COUNTIFS這個條件計數(shù)函數(shù)統(tǒng)計每一行的客戶ID的出現(xiàn)次數(shù),得到這個計算結(jié)果:
{2;2;1;3;3;3;3;3;3;3;3;3;2;2}
這個結(jié)果的含義是C2出現(xiàn)2次,C3出現(xiàn)了3次,C4出現(xiàn)了1次,以此類推。
之后再用1/{2;2;1;3;3;3;3;3;3;3;3;3;2;2},比如“OLDWO”這個客戶ID出現(xiàn)了2次,有2個計算結(jié)果,就把單次的計算結(jié)果變成1/2。
最后再用SUMPRODUCT函數(shù)對1/{2;2;1;3;3;3;3;3;3;3;3;3;2;2}的結(jié)果進行求和,那么“OLDWO”這個客戶ID有2個1/2、1/2,求和之后就變成了1,就意味著有1個名為“OLDWO”的客戶。
這是非重復客戶數(shù)量的計算結(jié)果:
場景2:統(tǒng)計每個地區(qū)的客戶數(shù)量?
使用公式:=SUMPRODUCT(($E$2:$E$15=M2)*(1/COUNTIF($C$2:$C$15,$C$2:$C$15)))
在場景1的基礎(chǔ)上增加了必須地區(qū)相同的條件,也就是$E$2:$E$15=M2這個部分的條件。SUMRPODUCT函數(shù)各個條件用()括起來,再用*相連。
這樣就得到了非重復的每個地區(qū)的客戶數(shù)量的計算結(jié)果:
2?數(shù)據(jù)透視表法
使用函數(shù)的方法來實現(xiàn)非重復計數(shù),理解起來略微復雜。如果你使用的是Excel 2013及以上的版本,還有一個更為簡單的方法來實現(xiàn)非重復計數(shù),那就是用數(shù)據(jù)透視表。
點擊“插入”選項卡中的“數(shù)據(jù)透視表”,在彈出來的對話框中勾選“將此數(shù)據(jù)添加到數(shù)據(jù)模型”,生成數(shù)據(jù)透視表。
將“地區(qū)”拖到行標簽中,再將“客戶名稱”拖到值項中,就可以看到初始的統(tǒng)計結(jié)果中是包含重復值的計數(shù)。
接著我們在匯總數(shù)字上點擊鼠標的右鍵,選擇“值字段設(shè)置”,在彈出來的對話框中選擇“非重復計數(shù)”。
就得到了非重復計數(shù)的結(jié)果,是不是比函數(shù)操作簡單很多!
這就是2種可以自動更新計算結(jié)果的非重復計數(shù)的方法,我們總結(jié)一下:
函數(shù)法:SUMPRODUCT+COUNTIFS,適合任何版本
數(shù)據(jù)透視表法:插入數(shù)據(jù)透視表時勾選“將此數(shù)據(jù)添加到數(shù)據(jù)模型”,計算方式使用“非重復計數(shù)”,適合Excel 2013及以上版本