VBA SUMIF然后删除重复行

时间:2014-11-13 17:21:58

标签: excel vba

我正在尝试创建一个宏(我知道Pivot也可以实现它;但是,我需要一个宏)。如果它与Col A中的Criteria匹配,我需要一个宏来汇总Col D中的值。然后我想删除所有其他值,只留下sumif值。

例如

Col A    ColD
AB       10
CD       5
FG       25
HI       100
AB       50
FG       0
OP       500
HI       80
OP       66

然后

Col A    ColD
AB       60
CD       5
FG       25
HI       180
OP       566

目前我正在使用以下代码,但它无效

Dim Sh As Worksheet
Dim LastRow As Long
Dim Rng As Range
Set Sh = Worksheets(1)
Sh.Columns(5).Insert
LastRow = Sh.Range("A65536").End(xlUp).Row
With Sh.Range("A1:A" & LastRow).Offset(0, 4)
    .FormulaR1C1 = "=IF(COUNTIF(R1C[-4]:RC[-4],RC[-4])>1,"""",SUMIF(R1C[-4]:R[" & LastRow & "]C[-4],RC[-4],R1C[-1]:R[" & LastRow & "]C[-1]))"
    .Value = .Value
End With
Sh.Columns(4).Delete
Sh.Rows(1).Insert
Set Rng = Sh.Range("D1:D" & LastRow + 1)
With Rng
    .AutoFilter Field:=1, Criteria1:="="
    .SpecialCells(xlCellTypeVisible).EntireRow.Delete
End With

非常感谢任何帮助。感谢

1 个答案:

答案 0 :(得分:0)

你的sumif公式是从错误的列总结: 您的RC表示法等同于:

=IF(COUNTIF(A$1:A1,A1)>1,"",SUMIF(A$1:A10,A1,D$1:D10))

但你想: =IF(COUNTIF(A$1:A1,A1)>1,"",SUMIF(A$1:A10,A1,b$1:b10))

用这个纠正:

.FormulaR1C1 = "=IF(COUNTIF(R1C[-4]:RC[-4],RC[-4])>1,"""",SUMIF(R1C[-4]:R[" & LastRow & "]C[-4],RC[-4],R1C[-3]:R[" & LastRow & "]C[-3]))"