位置:首頁 > 軟件操作教程 > 辦公軟件 > Excel > 問題詳情

去除重復項的常用技巧

提問人:周麗平發(fā)布時間:2021-08-05

1、刪除重復項

【刪除重復項】功能是Excel 2007版本以后新增的功能,因此適用于Excel 2007及其后續(xù)版本。

將活動單元格定位在數(shù)據(jù)清單中,然后在功能區(qū)上依次單擊【數(shù)據(jù)】——【刪除重復項】,會出現(xiàn)【刪除重復項】對話框。

對話框中會要求用戶選擇重復數(shù)據(jù)所在的列(字段)。假定我們將“重復項”定義為所有字段的內(nèi)容都完全相同的記錄,那么在這里就要把所有列都勾選上。而如果只是把某列相同的記錄定義為重復項,例如文章開頭所提到的第二種場景情況,那么只需要勾選那一列字段即可。

image.png

在勾選所有列以后,單擊【確定】按鈕,就會自動得到刪除重復項之后的數(shù)據(jù)清單,剔除的空白行會自動由下方的數(shù)據(jù)行填補,但不會影響數(shù)據(jù)表以外的其他區(qū)域。效果如下圖所示:

image.png

2、高級篩選

在2007版出現(xiàn)以前,【高級篩選】功能一直是刪除重復項的利器。

將活動單元格定位在數(shù)據(jù)清單中,然后在功能區(qū)上依次單擊【數(shù)據(jù)】——【高級】(2003版本中的操作路徑是【數(shù)據(jù)】——【篩選】——【高級篩選】),會出現(xiàn)【高級篩選】對話框。

對話框中會要求用戶指定列表區(qū)域,就是數(shù)據(jù)清單所在的單元格區(qū)域,默認情況下會自動生成。篩選方式上一般選擇“將篩選結(jié)果復制到其他位置”,以方便刪除重復項以后的處理操作。指定這種方式以后,對話框中會要求用戶指定“復制到”哪里,也就是刪除重復項以后的數(shù)據(jù)清單放置位置,用戶指定其左上角單元格的位置即可,在這個例子中我們設定為E1單元格。最后一項也是刪除重復項最關鍵的一個選項必須勾選:【選擇不重復的記錄】。如下圖所示:

image.png

單擊【確定】按鈕以后,就會在E1單元格開始的區(qū)域中生成剔除重復項以后的另一份數(shù)據(jù)清單,效果如下圖所示:

image.pngExcel 2010中去除重復項的幾種常用技巧

假定按照第二種場景的方式來定義重復項,就是需要刪除所有【姓名】字段內(nèi)容重復的記錄,可以這樣操作:

在數(shù)據(jù)清單中,選中【姓名】字段所在的區(qū)域A1:A12單元格,然后在功能區(qū)上依次單擊【數(shù)據(jù)】——【高級】(2003版本中的操作路徑是【數(shù)據(jù)】——【篩選】——【高級篩選】),會出現(xiàn)【高級篩選】對話框。篩選方式選擇“在原有區(qū)域顯示篩選結(jié)果”,【選擇不重復的記錄】復選框同樣必須勾選,如下圖所示:

image.pngExcel 2010中去除重復項的幾種常用技巧

選擇【在原有區(qū)域顯示篩選結(jié)果】的方式,使得對A列不重復項的篩選結(jié)果能夠同時影響到其他字段上。單擊【確定】按鈕后,篩選結(jié)果如下圖所示。將這個篩選的結(jié)果復制粘貼出來,就等到一份剔除姓名字段重復項以后的新清單。需要補充的一點是,對于姓名字段相同的記錄,這樣的剔除操作過后,保留的是最先出現(xiàn)的記錄。例如在第七行和第十二行兩個“吳凡”之間,Excel保留的是最先出現(xiàn)的第七行記錄,而剔除了后面的第十二行記錄。

image.pngExcel 2010中去除重復項的幾種常用技巧

3、使用公式

如果會一點函數(shù)公式,那么用函數(shù)公式配合篩選的方式來操作會更靈活多變一些,可以適應更多復雜條件。

在D列增加一個輔助公式,在D2單元格中輸入公式:=A2&B2&C2,然后向下復制填充,生成的一列公式結(jié)果是將各條記錄中的三個字段內(nèi)容合并在一個單元格中。然后在E列再增加一個輔助公式,在E2單元格中輸入公式:=COUNTIF(D2:D$12,D2),特別注意公式中絕對引用符號$的使用位置。將公式向下復制填充,得到下面圖中所示的結(jié)果:

image.png

COUNTIF函數(shù)的作用是統(tǒng)計某個區(qū)間內(nèi),與查詢值相同的數(shù)據(jù)的個數(shù),上面那個公式中的D2:D$12這種絕對引用和相對引用相組合的方式就可以在公式向下復制的過程中形成一個隨位置變化的動態(tài)區(qū)域,使得COUNTIF函數(shù)每次都只跟自己下方的區(qū)域中的數(shù)據(jù)進行對比,而不會牽涉到上方的數(shù)據(jù)。因此在第三行的時候,會找到2條與“李明28研發(fā)部”相同的記錄,而到了第五行的時候,就只找到了一條匹配記錄。

通過這個公式結(jié)果可以發(fā)現(xiàn),所有E列運算結(jié)果大于等于2的記錄(如果有更多的重復,結(jié)果會大于2)就是我們需要剔除的重復項。這個時候,使用自動篩選功能,在E列篩選出大于1所在的行,然后刪除整行,再恢復到非篩選狀態(tài),就能得到最后所需的清單,如下圖所示:

image.png

在上面的操作中之所以要將三個字段內(nèi)容合并在一起,是因為我們在第一個場景中將“重復項”定義為所有字段內(nèi)容都相同,因此將這三個字段的內(nèi)容同時合并在一起進行比較,相當于邏輯運算中的”與“運算。假設需要按照第二場景中的定義來進行剔除操作,就不再需要D列這個過渡公式,而是可以直接以A列作為COUNTIF函數(shù)的對比區(qū)域,可以使用公式:=COUNTIF(A2:A$12,A2) 就可以實現(xiàn)相同的效果。需要補充說明的是,這個方法在剔除操作后,所保留下來的記錄是重復記錄中最晚出現(xiàn)的那條記錄。

同樣是第一場景,也可以用一個稍微復雜一些的公式來替代D、E兩列的公式:=SUMPRODUCT(1*(A2&B2&C2=A2:A$12&B2:B$12&C2:C$12)) 公式的原理與前面相同。

繼續(xù)查找其他問題的答案?

回復(0)
返回頂部