我有一张Excel表格。它在A到J列中有数据。
我想写一个宏,它会根据A到I列找到重复的行。
这意味着如果所有A到I列中的值都重复,则应将两行视为重复行。
重复的行中,宏应该
1)在第J列中添加值。列J包含数字。
2)保留一行并删除其副本。
3)在保留的行中,使用在步骤1中计算的总和更新J列中的值。
请让我知道怎么做。
答案 0 :(得分:1)
将总和收集到一个数组中。
Option Explicit
Sub dedupeSumK()
Dim i As Long, lrK As Long, tmp As Variant, vals As Variant
With Worksheets(1)
tmp = .Range(.Cells(2, "A"), .Cells(Rows.Count, "K").End(xlUp)).Value2
ReDim vals(LBound(tmp, 1) To UBound(tmp, 1), 1 To 1)
For i = LBound(vals, 1) To UBound(vals, 1)
vals(i, 1) = Application.SumIfs(.Columns(11), _
.Columns(1), tmp(i, 1), _
.Columns(2), tmp(i, 2), _
.Columns(3), tmp(i, 3), _
.Columns(4), tmp(i, 4), _
.Columns(5), tmp(i, 5), _
.Columns(6), tmp(i, 6), _
.Columns(7), tmp(i, 7), _
.Columns(8), tmp(i, 8), _
.Columns(9), tmp(i, 9), _
.Columns(10), tmp(i, 10))
Next i
.Cells(2, "K").Resize(UBound(vals, 1), UBound(vals, 2)) = vals
With .Cells(1, "A").CurrentRegion
.RemoveDuplicates Columns:=Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), Header:=xlYes
End With
End With
End Sub