每天一點(diǎn)小技能
職場(chǎng)打怪不得慫
編按:如何提取不重復值并統計數量?這是EXCELER在工作中普遍會(huì )遇到的問(wèn)題。今天,小E給大家帶來(lái)的就是從三個(gè)角度,用三種完全不同的方式去處理這類(lèi)問(wèn)題的方法。不管你是EXCEL小白還是有一定經(jīng)驗的數據民工,又或者是想成為大神的EXCEL老鳥(niǎo),都能在這篇文中,找到適合你的方法。一秒搞定提取不重復值,其實(shí)很簡(jiǎn)單……
【前言】
今天說(shuō)的EXCEL問(wèn)題,其實(shí)在大家的日常工作中經(jīng)常會(huì )遇到,例如下面的這個(gè)圖:
公眾號回復:入群,下載練習文件
這個(gè)問(wèn)題中,A列中只列出了30行的數據,而實(shí)際工作中的數據情況則會(huì )有更多的變化。鑒于一切問(wèn)題的解決方法都是“萬(wàn)變不離其宗”的,所以筆者將就上圖的問(wèn)題,給大家分別講述三個(gè)不同的解決方法??赐暌院?,相信大家無(wú)論遇到再怎么復雜的同類(lèi)問(wèn)題,都會(huì )有思路去解決,而不至于“手足無(wú)措”。
【正文】
最簡(jiǎn)單的處理方式
對于提取不重復值的處理方法,筆者認為最簡(jiǎn)單的方式就是使用工具欄中的“刪除重復值”功能鍵來(lái)實(shí)現。
首先選中A列,選擇性粘貼為數值,粘貼到D列;然后選中D列,再點(diǎn)擊工具欄——“數據”選項卡——“刪除重復值”。這樣我們就完成了提取唯一值的過(guò)程,如下圖所示:
然后在E2單元格中輸入函數:
=COUNTIF(A:A,D2)
下拉填充E2:E7單元格區域,及此完成操作。
點(diǎn)評:筆者認為,這個(gè)方式可能對于小伙伴們來(lái)說(shuō),是最容易上手而且是最直接的操作方式,簡(jiǎn)單兩步就可以完成。雖然每次統計的時(shí)候都需要手動(dòng)操作一遍,好在是不復雜。
最慌的處理方式
Hohoho,之所以叫它是“最慌”的處理方法,是因為它需要使用被EXCELER們稱(chēng)為“萬(wàn)金油”的公式。這個(gè)名字應該是如雷貫耳了吧,很多小伙伴估計都聽(tīng)過(guò),也都知道萬(wàn)金油是處理去重并提取唯一值的利器。雖然在《EXCEL教程》的許多教程中都有相關(guān)案例,但依然有很多小伙伴不能很好的理解并使用它。
即使大家一看到“去重并提取唯一值”,就想到“萬(wàn)金油”公式,但一動(dòng)手用“萬(wàn)金油”公式,還是只會(huì )“慌的一批”~~~

在D2單元格輸入函數:
{=IFERROR(INDEX($A$2:$A$31,SMALL(IF(MATCH($A$2:$A$31,$A$2:$A$31,0)=ROW($A$1:$A$30),ROW($A$1:$A$30),99^9),ROW(D1))),"")}
公式解析:
① MATCH($A$2:$A$31,$A$2:$A$31,0)=ROW($A$1:$A$30)
利用MATCH函數,判定A2:A31區域中的值,第一次出現的序號,是否和行號一致。
② IF(……,ROW($A$1:$A$30),99^9)
利用IF函數,返回索引值。如果MATCH()中的行號一致,則返回行號;如果不一致,則返回99^9(一個(gè)絕對大的值)
③ SMALL(……,ROW(D1))
利用SMALL函數,提取前兩步中返回的值,因為我們的函數需要下拉,那么ROW(D1)的值,就會(huì )隨著(zhù)下拉而隨動(dòng),此函數的意義就變成,第1最小的值、第2最小的值、第3最小的值……。
④ INDEX($A$2:$A$31,……)
在A(yíng)2:A31中,提取第x個(gè)位置上的值,這個(gè)x值就是剛才SMALL()中返回的值。
⑤ =IFERROR(……,"")
最后使用IFERROR函數容錯,使得錯誤值不出現。
點(diǎn)評:筆者認為,如果大家的函數水平還算過(guò)硬,那還是推薦大家使用這個(gè)方法。因為公式可以隨著(zhù)數據源的變化而變化,得出當前的結果,不需每次都要操作一遍。這個(gè)方法對于形成函數類(lèi)型的模板是相當實(shí)用。
最正確的處理方式
最后一種方法,是筆者在工作中處理此類(lèi)問(wèn)題時(shí),經(jīng)常使用的方法。
可能對于有的小伙伴來(lái)說(shuō),它是一個(gè)“談虎色變”的方法。但是不容否定的說(shuō),這個(gè)方法——VBA字典去重,才是真正打開(kāi)“EXCEL去重”正確使用方式的方法。

首先按ALT+F11,打開(kāi)VBE界面。在左側的“工程窗口”中插入模塊,然后在代碼窗口中輸入代碼:
Sub 去重()
Dim arr, d
arr = Sheets("最對").Range("A2:A31")
Set d = CreateObject("scripting.dictionary")
For i = 1 To UBound(arr)
d(arr(i, 1)) = d(arr(i, 1)) + 1
Next i
Sheets("最對").[D2].Resize(d.Count, 1) = Application.Transpose(d.keys)
Sheets("最對").[E2].Resize(d.Count, 1) = Application.Transpose(d.items)
End Sub
小伙伴們運行代碼后,就可以得到去重后的字段和相應的次數。
點(diǎn)評:筆者認為,EXCEL最大的魅力在于它的辦公自動(dòng)化,VBA又是在此基礎上更進(jìn)一步讓大家真正實(shí)現辦公自動(dòng)化的操作。一段簡(jiǎn)單的代碼,可以讓你解放雙手的同時(shí),還可以提高表格統計的效率和計算的正確性。
【編后語(yǔ)】
此篇教程到這里就結束了,希望可以給大家帶來(lái)一些思考。數組函數也好,VBA也好,都是需要大家對數據有深度地理解和邏輯思考能力。我們到底算不算一個(gè)“數據人”,在處理同一個(gè)問(wèn)題時(shí),看你選擇哪種數據處理方法就已然可以判斷了。
在線(xiàn)咨詢(xún)Excel課程
Excel教程相關(guān)推薦
我花了5小時(shí),整理出這13個(gè)辦公中最實(shí)用的Excel技巧(建議收藏)
做了五年財務(wù)的小姐姐,竟然被Excel里的這個(gè)符號坑了?
四象限矩陣圖為什么成為名企老板們最?lèi)?ài)的excel圖表?這是我見(jiàn)過(guò)的最佳答案!
《10天學(xué)會(huì )Excel》課程:帶你學(xué)遍Excel技巧、函數、透視表、圖表、數據分析等實(shí)用功能
主講老師: 滴答

Excel技術(shù)大神,資深培訓師;
課程粉絲100萬(wàn)+;
開(kāi)發(fā)有《Excel小白脫白系列課》
《Excel極速貫通班》。
原價(jià)299元
限時(shí)特價(jià) 99 元
少喝兩杯咖啡,少吃?xún)纱闶?/span>
就能習得受用一生的Excel職場(chǎng)技能!
聯(lián)系客服