簡體   English   中英

Excel VBA刪除重復項

[英]excel vba remove duplicates

我有下表:

Name, Total, Email Address  Date
Test1,12,test1@hotmail.com  12/12/2012
Test2,12,test1@hotmail.com  12/05/2015
Test2,12,test1@hotmail.com  12/05/2015
Test3,12,test1@hotmail.com  12/07/2016

我想在姓名,電子郵件地址和日期上進行匹配。 如果找到了現有記錄,那么我想將它們合並並將總計加在一起。 例如

Test2,12,test1@hotmail.com  12/05/2015
Test2,12,test1@hotmail.com  12/05/2015

會成為

Test2,24,test1@hotmail.com  12/05/2015

我有什么選擇? 如果我順序地進行迭代並檢查每個行,則將花費大量的時間。(正在考慮使用范圍檢查並針對所有行檢查當前行,如果找到,則刪除並添加新行)。將感謝一些示例。

您可以添加第5列和CONCAT列Name,Email,Date,並在其間添加逗號。 例如Test1,test1@hotmail.com,12/12/2012

將此列導出到另一張表中,然后應用“ Remove duplicates以便獲得唯一的數據。

現在,根據此列應用SUMIF並將Total中的數據求和為:

SUMIF(range:"your tabel",criteria: the 5th column, sum range: column Total)

為什么不簡單地讓E列像這樣求和:

=SUMIFS(B:B,A:A,"="&A2,C:C,"="&C2,D:D,"="&D2)

何時完成復制為值並使用功能區上的功能刪除重復項? 這樣,您可以將E列的末尾復制到B列,並在幾分鍾內完成編輯:清晰性和步驟

這些是需要的步驟

  1. 將以下公式放在單元格E1中,並將其向下拖動,直到它位於E列的全部中,直到數據結束

    =SUMIFS(B:B,A:A,"="&A2,C:C,"="&C2,D:D,"="&D2)

  2. 將E列復制到E列- 作為值

  3. 使用Excel的刪除重復項功能

  4. 將E列復制到B列

這就是完成任務所需的全部步驟。

假設:

  1. 該列表按ColA排序
  2. 您的表標題在Row3中
  3. 只有1個重復
  4. 如果ColA相同,則C和D也是如此

     Dim i As Integer Dim cellCount As Integer cellCount = Application.CountA(Range("A:A")) - 1 For i = 4 To cellCount If (Cells(i, "A").Value = Cells(i + 1, "A").Value) Then Cells(i, "B").Value = Cells(i, "B").Value + Cells(i + 1, "B").Value End If Next i ActiveSheet.Range("A:D").RemoveDuplicates Columns:=1, Header:=xlYes 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM