VBA - SUMIFS - 递增行 - 错误1004

时间:2017-06-13 16:02:14

标签: vba increment sumifs

我刚刚在网站上注册,我确信我可以在下面的问题上得到一些帮助(我不是VBA的专家)..

简单地说,我正在做一个基于2个参数(列A和列G)计算总量(在第I列中,每行)的宏。我使用的是SUMIFS函数,它对一个单元格很有用。但是,我想为每一行自动化它,这对我来说变得棘手......

以下是适用于单元格I2的代码:

Sub quantity_aggregated()      
    Dim sht As Worksheet, LastRow As Long, i As Integer    
    LastRow = Cells(Rows.Count, "A").End(xlUp).Row     
    Set sht = ThisWorkbook.Worksheets("JDE_Greece")     
    Range("I2").Formula = "=SUMIFS(H:H,G:G,G2,A:A,A2)"     

我希望保持这种方式但是要集成一个For,从第2行开始并在最后一个填充的行结束。

我想(并尝试过)下面的一些代码,3个不同的(结尾是相同的,递增i并关闭宏):

For i = 2 To LastRow     

'Range("I2").Formula = "=SUMIFS(H:H,G:G,Range(i,7),A:A,Range(i,1)"''      

'Range(i, 9).Value = Application.WorksheetFunction.SumIfs(Range("H:H"), Range("G:G"), Range(i, 7), Range("A:A"), Range(i, 1))'   

'Cells(i, 9).FormulaR1C1 = "=SUMIFS(H:H,G:G, "'     

Next i      
End Sub  

我理解这个过程,但对于每一个,对象全局失败的方法范围(错误1004)"弹出来的。我确定它是关于定义应用程序,对象或相关内容但无法解决的问题。

有没有人有任何想法?这真的很棒:)

提前多多感谢,

1 个答案:

答案 0 :(得分:1)

您只需将公式应用于整个范围I即可。由于您对A2G2的引用为" relative" ,因此该公式将系统地针对该范围内的每一行进行调整。

Dim sht As Worksheet, LastRow As Long
Set sht = ThisWorkbook.Worksheets("JDE_Greece")     
LastRow = sht.Cells(sht.Rows.Count, "A").End(xlUp).Row     
sht.Range("I2:I" & LastRow).Formula = "=SUMIFS(H:H,G:G,G2,A:A,A2)"

如果您想使用循环"进行练习",

For i = 2 To LastRow
  sht.Range("I" & i).Formula = "=SUMIFS(H:H, G:G, G" & i & ", A:A, A" & i & ")"
Next i

但请注意,这正是第一种形式幕后发生的事情。