我正在尝试创建一个宏(我知道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
非常感谢任何帮助。感谢
答案 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]))"