vba - Excel VBA 合并重复行并添加数量

标签 vba excel sum duplicates

我的数据如下所示:

Col A | Col B | Col C
name 1| Item 1|   3
name 2| Item 3|   1
name 3| Item 2|   2
name 2| Item 3|   6
name 3| Item 2|   4
name 2| Item 3|   3

我需要一行代码来添加重复行的最后一列数量,然后删除重复的行。所以上表应该是这样的:
Col A | Col B | Col C
name 1| Item 1|   3
name 2| Item 3|   10
name 3| Item 2|   6

我从其他人的问题中尝试了多种方法,但我不断收到“错误:400”。

这里有两个例子:
    For Each a In tm.Range("B2", Cells(Rows.Count, "B").End(xlUp))
    For r = 1 To Cells(Rows.Count, "B").End(xlUp).Row - a.Row
        If a = a.Offset(r, 0) And a.Offset(0, 1) = a.Offset(r, 1) And a.Offset(0, 2) = a.Offset(r, 2) Then
            a.Offset(0, 4) = a.Offset(0, 4) + a.Offset(r, 4)
            a.Offset(r, 0).EntireRow.Delete
            r = r - 1
        End If
    Next r
Next a


With Worksheets("Card Test") 

With .Range("b2:e2").Resize(.Cells(.Rows.Count, 1).End(xlUp).Row)
    .Copy
    With .Offset(, .Columns.Count + 1)
        .PasteSpecial xlPasteAll ' copy value and formats
        .Columns(2).Offset(1).Resize(.Rows.Count - 1, 2).FormulaR1C1 = "=SUMIF(C1,RC1,C[-" & .Columns.Count + 1 & "])"
        .Value = .Value
        .RemoveDuplicates 1, xlYes
    End With
End With

End With

另外我应该提到我有两个工作表,使用宏的按钮将位于与数据不同的工作表上。这似乎也引起了问题。

最佳答案

您可以使用 FOR 循环 解决您的问题:

Sub RemoveDuplicates()

Dim lastrow As Long

lastrow = Cells(Rows.Count, "A").End(xlUp).Row

For x = lastrow To 1 Step -1
    For y = 1 To lastrow
        If Cells(x, 1).Value = Cells(y, 1).Value And Cells(x, 2).Value = Cells(y, 2).Value And x > y Then
            Cells(y, 3).Value = Cells(x, 3).Value + Cells(y, 3).Value
            Rows(x).EntireRow.Delete
            Exit For
        End If
    Next y
Next x


End Sub

关于vba - Excel VBA 合并重复行并添加数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42824899/

相关文章:

vba - 在 Excel 中搜索无限循环,为什么?

excel - 从另一个模块调用一个模块时出现问题

error-handling - VBA:在#VALUE错误上格式化单元格

c# - 将多个 GridView 导出到多个 excel 选项卡(工作表)

arrays - 构建和比较数组

sql - adDBTimeStamp - 访问 VBA 到 SQL Server 存储过程

arrays - 获取 0 和 1 组合的二维数组

php - xslt 1 和求和函数

r - 矩阵反对角线之和

R 编程我需要帮助找到 2 列列表的总和