excel vba删除重复

时间:2015-08-06 12:45:26

标签: excel vba

我有下表:

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

我希望在姓名,电子邮件地址和日期上进行匹配。如果找到现有记录,那么我想合并它们并将总计加在一起。 e.g。

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

会变成

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

我有哪些选择?如果我按顺序迭代并检查每一个它将花费大量时间..(正在考虑使用范围检查并检查当前行对所有,如果找到然后删除并添加新行)。将欣赏一些示例。

3 个答案:

答案 0 :(得分:2)

您可以在它们之间添加第5列和CONCAT列名称,电子邮件,日期和逗号。例如。 Test1,test1@hotmail.com,12/12/2012

将此列导出到另一个工作表中并应用Remove duplicates,以便您拥有唯一数据。

现在根据此列应用SUMIF并将Total中的数据汇总为:

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

答案 1 :(得分:0)

为什么不简单地让E列加上像这样的值:

{
    newTeamId: "2"
    playerId: "1"
}

当您完成复制值并使用功能区上的功能删除重复项时?这样,您可以在结束列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栏

  5. 这就是完成任务所需的全部步骤。

答案 2 :(得分:0)

假设:

  1. 该列表按ColA排序
  2. 您的表格标题位于第3行
  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