在列

时间:2018-10-25 00:38:34

标签: excel vba excel-vba

我正在尝试编写代码来解决我遇到的这个小问题,但似乎无法实现。我在excel电子表格中有多个列,并且在那些列之一中,有重复的值。我想要做的是删除第二个/重复的值,但还要在其他列之一中获取整数值,并将其添加到第一个值所在的行,然后删除该“第二个”行。我尝试使用.RemoveDuplicates命令,但是它只是删除了重复的值并将整个列上移,因此我无法根据需要添加值。

这是一个例子

Sample data

我只需要从D列之一中删除重复项,在这里我们看到第5行和第10行在该列中是相似的,而我想做的是在第5行中添加C列中的数字并删除t´10行,所以我将结束此

After image

我真的希望你们中的任何一个都能帮上忙,因为我有点迷茫。谢谢!

3 个答案:

答案 0 :(得分:0)

没有代码,您可以使用高级副本将唯一值复制到另一个范围,sumif获取总计,索引/匹配将其他列引入。一旦找出来,将其记录为宏并清理。

答案 1 :(得分:0)

使用数据透视表恢复数据。

您的输入数据如下:

enter image description here

您可以使用数据透视表恢复数据,并按第4列对数据进行分组,并在第3列中对值求和。像这样:

enter image description here

这样,您可以创建一个新的数据范围,在该范围中,可以根据需要对数据进行分组,不包括不必要的行。试试吧!

答案 2 :(得分:0)

如果要删除行,请从头开始。查看您正在处理的行上方的D列中的值是否匹配。如果存在匹配项,则将C列中的值求和到匹配的行中,然后删除您正在处理的行。

Sub words()
    Dim i As Long, m As Variant

    With Worksheets("sheet1")

        For i = .Cells(.Rows.Count, "D").End(xlUp).Row To 2 Step -1
            m = Application.Match(.Cells(i, "D").Value, .Range("D:D").Resize(i - 1, 1), 0)
            If Not IsError(m) Then
                .Cells(m, "C") = .Cells(m, "C").Value2 + .Cells(i, "C").Value2
                .Cells(i, "D").EntireRow.Delete
            End If
        Next i

    End With
End Sub