我們經常遇到Eexcel數據重複的問題,需要解決,但能找到的教程都很零散,往往只提供了一種方法解決了某一類重複問題。
但是Excel數據重複問題,看似簡單,但是深究起來,有很多值得思考和挖掘的細節。在這篇文章中,我試圖梳理出所有我們會遇到的Excel數據重複問題,並給出多種解決辦法。

01Excel重複數據如何界定?
要解決Excel重複數據問題,第一步是界定如何界定數據是否重複?或者說,我們依據什麼來判斷數據是否重複?
我能想到的有三種數據重複的情況:
- 【單字段重複】:判斷某個關鍵字段是否重複,如姓名是否重複、手機號是否重複、郵箱是否重複等;
- 【多字段重複】:需要綜合若干個字段才能判定重複,比如單單通過姓名列是無法判定重複的,因為可能有同名同姓的,所以需要姓名再加上手機號或郵箱來判定是否重複;
- 【全字段重複】。比如,我們需要判定兩條記錄在所有字段上是否完全一模一樣。
而根據重複值可能出現的地方,又可以分為兩種情況:
- 重複值出現在同一張表(即同一個sheet或同一個table)中,為敘述方便,簡稱為【單表重複】;
- 重複值出現在不同表(這些表可能在同一個sheet的不同tables或regions中,也可能在不同的sheets中,乃至在不同的文件中,處理思路都是一樣的,因此不單列)中,為敘述方便,簡稱為【多表重複】。
02尋找到重複數據後如何處理?
當我們找到重複數據(無論屬於前面所列舉的哪種情況)後,我們通常需要做如下處理:
- 標記。將找到的重複值以醒目的方式標識出來,如用顏色標記,如用公式結果顯示匹配結果。
- 刪除與保留。可能是刪除重複值,保留唯一值;或者刪除唯一值,保留重複值。
- 提取。將匹配結果提取到新的表格。
下面一一梳理重複數據處理在Excel中的具體操作步驟。
03用Excel的條件格式標記非重複值(唯一值)
如果屬於【單字段重複】情況,只需要選擇該字段,然後選擇條件格式-突出顯示單元格規則-重複值

這時會彈出下面的窗口:

左邊下拉框可選擇是標記重複值呢還是標記唯一值;右邊下拉框則可選擇要應用的格式,如果選擇了自定義,則會彈出詳細的格式設置框,可以進行更細緻的格式(數字、字體、邊框和填充效果)設置:

標記後效果如下(我用了默認填充效果標記重複值):

如果屬於【多字段重複】或【全字段重複】,則標記之前需要有額外動作:新增一個輔助列,連接作為判斷重複依據的列字段,然後在該輔助列上應用條件格式:

如上圖所示,我需要通過【姓名】、【性別】和【姓名拼音】三個字段連接之後才能判定是否重複,因此我增加了一個輔助列【判斷是否重複】,然後用公式連接那三個字段,再在輔助列上應用條件格式進行標記。可以看到兩個陳婷雖然姓名和性別一樣,但是郵箱不一樣,最後結果是這兩條記錄作為兩條不同的記錄體現出來(無填充色)。
Excel條件格式無法刪除唯一值並保留重複值,只能先標識出重複值,然後通過顏色篩選來保留重複值:

如果要提取重複值或唯一值,需要通過篩選後手動將重複值或唯一值提取到新的表格。
04通過Excel【數據】選項卡上的【刪除重複值】命令刪除重複值
這裡還是要區分是屬於【單字段重複】/【多字段重複】/【全字段重複】中的哪一種。
如果屬於【單字段重複】,只需要選定作為判斷依據的列,然後點擊【刪除重複值】按鈕,並在彈出窗口中選擇【以當前選定區域排序】:

如果屬於【多字段重複】/【全字段重複】,則可以選中任意一列後,點擊【刪除重複值】按鈕,在彈出窗口中選擇【擴展選定區域】:

這時Excel會彈出區域選擇窗口,如果是【多字段重複】的情況,那麼選擇作為判定依據的列,然後確定;如果是【全字段重複】,則全選所有列之後點擊確定。

直接用Excel的【刪除重複值】命令,只能刪除重複值,不能標記重複值(唯一值),也不能提取重複值,但是能保留唯一值。
05vlookup函數查找重複值
vlookup函數估計是Excel中使用率最高的函數之一。其基本形式是:
=VLOOKUP (lookup_value, table_array, col_index_num, [range_lookup])
參數說明見下表:

Vlookup函數的使用需注意以下關鍵點:
- 要查找的值,也被稱為查閱值。我見過很多人忘記寫查找的值。
- 查閱值所在的區域。 請記住,查閱值應該始終位於所在區域的第一列,這樣 VLOOKUP 才能正常工作。 例如,如果查閱值位於單元格 C2 內,那麼您的區域應該以 C 開頭。這個查閱值所在的區域可以在任意位置:同一個sheet的不同區域或不同tables,或者在不同sheet上,或者在不同的文件上都可以的。區別只在於引用不同對象的語法不同。實際應用中記不住沒關係,輸入公式時可以鼠標去選定查閱值所在的區域或table或sheet或文件路徑(需要你打開該文件)。
- 區域中包含返回值的列號。 例如,如果指定 B2: D11 作為區域,則應將 B 作為第一列,將 C 作為第二列進行計數,依此類推。
- (可選)如果需要返回值的近似匹配,可以指定 TRUE;如果需要返回值的精確匹配,則指定 FALSE。 如果沒有指定任何內容,默認值將始終為 TRUE 或近似匹配。雖然是可選,但是我還是建議指定,畢竟絕大多數時候我們要查找的是精確值。並且這個值有點違背我們的直覺——查找精確值是FALSE而模糊匹配是TRUE。
有時候我們會到要查找的值在需要查找區域的左側,這時可以採取下面類似的辦法:
=VLOOKUP(D2,IF({1,0},D2:D28,B2:B28),2,0))

公式中的1和0不是實際意義上的數字,而是1相關於TRUE,0相當於FALSE,當為1時,它會返回IF的第一個參數(D列),為0時返回第二個參數(B列)。根據數組運算返回數組,所以使用IF後的結果返回一個數組(非單元格區域):該數組由姓名列和姓名拼音列的值成對組成。
一、標記重複值或唯一值
vlookup查找結果即對重複值(匹配成功)或唯一值(匹配失敗)進行了標記。
二、刪除和提取重複值(唯一值)
對vlookup查找結果進行篩選後,即可刪除重複值(唯一值),或將篩選結果複製到新的表格中。
06PowerBI處理重複值,節省海量時間
如果查找重複值的操作只需要做一次,那麼我建議用前面的幾種方法就行了。
如果你日常工作中總是涉及查找重複數據並進行相應處理,那麼,我建議用PowerBI來幫你節省海量時間。用我的口頭禪就是——辛苦一次,幸福一生。
為什麼這麼說呢?因為不論你查找和處理重複值的步驟有多複雜,數據量有多大(幾百萬上千萬乃至更大的數據應該輪不到我們用Excel來處理),只要建立好PowerBI數據模型後:你每次更新要做的要麼只是打開模型文件刷新一下(PowerQuery),耗時幾分鐘;要麼PowerBI以固定頻率自動刷新結果(需要PowerBI賬號且結果不會自動添加到Excel中),零耗時。
假設:
你是總公司的一名小員工,你的任務是每天接收下面單位發上來的報名表。
但是呢,下面單位的人做事不動腦筋,每天都給你發一個客戶報名表上來。
這些表吧,有時候是包括該單位全部的報名信息,有時候又是只有新增的;而且有可能一個文件裡邊的多個sheets裡邊都有報名信息;這些Excel文件名稱又是千奇百怪;最可氣的是,讓他們早上提交,他們有的非要快下班了才提交;唯一值得欣慰的是這些表格的字段都是一樣的。
你現在需要從提交上來的N個表格中,剔除重複報名信息,形成一個完整的不重複的報名表。然後,你每天要在下班前把完整報名表給上級看。

很簡單的一項工作,但是你用前面的方法做,我百分之一百肯定你每天都要加班——因為每天都有人17:55才把表發給你,而你18:00就要把報名表給上級看。
來看用PowerBI怎麼把這個無聊工作縮短到5分鐘乃至0分鐘之內。
- 首先,新建一個Excel,名字叫《報名表匯總》;
- 引入來自於文件夾的源,找到“報名表”這個文件夾;

3.找到目標文件夾——“報名表”:

4.然後我們不要PowerQuery自作聰明地幫我們合併這些表啊sheets之類,我們自己操作,點擊【轉換數據】,:

5.這時就進入查詢界面了:

6.我們刪除不必要的列,只保留【Content】列,因為數據都在這裡邊。然後新增一列,調用Excel.Workbook()函數,從Binary中獲取數據:

7.然後我們刪除【Content】列,保留【自定義】列了,因為數據被我們提取到【自定義】列。點擊該列右上角的展開圖標,只保留其中的【Data】列(因為表格在這裡面):

8.展開【Data】列之後,我們要做個小動作,就是把每一個表格的第一行都作為標題。這一步不是必須,可以將來再做,但是先做這一步可以節省一些步驟和時間,何樂而不為呢。調用Table.TransformColumns()函數和Table.PromoteHeaders()函數提升了表格標題後,就可以點擊【Data】列旁邊的展開符號,勾選全部三列,進行展開操作了:

9.展開後是下面這樣子,這時我們已經匯總了下面單位提交上來的所有報名信息了:

10.接下來我們要去重。這裡屬於【全字段重複】,因此我們選中所有列(可以ctrl+a快捷鍵,也可以選中第一列,然後按住shift的同時點擊最後一列),然後點擊菜單欄的【刪除行】下拉菜單里的【刪除重複項】:

11.去重後我們發現還有null行,篩選剔除就行了。這樣我們就得到了我們需要的下面所有單位的所有報名表了,且不再有重複:

12.最後一步,加載到Excel表格:

最後的結果:

13.高潮來了:假設在17:55,最後一家單位才把表格提交過來,比如叫《報名表3》,而你已經把其他單位的都處理好、得到一張報名表了,這時你要怎麼辦?一邊哭爹叫娘一邊重來一遍12個步驟么?NO!你要做的是,把這個《報名表3》丟到你之前建立好的《報名表》文件夾:

然後打開你剛才創建的《報名表匯總》Excel文件,點擊【數據】標籤,點擊【全部刷新】按鈕,三十秒後,奇蹟發生了,你更新了接近2600條報名信息!看來那個最後交的傢伙是故意坑你。但你只用了三十秒就處理完了,離18:00還有3分半!

那如果你連這三十秒的懶都想偷的話,那你需要等待下一篇文章。因為這篇文章實在太長了……
原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/269224.html
微信掃一掃
支付寶掃一掃