VBA - SUMIFS - 递增行 - 错误 1004

VBA - SUMIFS - Incrementing row - error 1004

我刚刚在网站上注册,我确定我可以在以下问题上得到一些帮助(我不是 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  

我了解这个过程,但对于每个过程,都会弹出一个 "method range of object global failed (error 1004)"。我确定这是关于定义应用程序、对象或相关但无法解决的问题。

有人有什么想法吗?真的很棒:)

非常感谢,

您可以简单地将公式应用于整个范围 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 practice",

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

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