2017-06-13 96 views
0

我剛剛註冊的網站上,我敢肯定,我可以得到以下問題的一些幫助(我不是在VBA專家)..VBA - SUMIFS - 遞增行 - 錯誤1004

簡單地說,我正在做一個宏,它根據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

您可以將公式簡單地適用於整個範圍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 

但是請注意,這恰恰是在第一種形式的幕後發生了什麼。

+0

嗨, 事實上,這個工作,它肯定更快......在這個循環上花了很多時間,我幾乎忘記了簡單的事情。謝謝。 但是,有什麼機會,你有任何線索爲什麼這個循環不起作用?如果我想插入一個循環(我想練習),那麼簡單的代碼會是什麼樣子。 感謝您的時間 – Jeofbist3

+0

「@ Jeofbist3帶循環公式將被組成爲'」= SUMIFS(H:H,G:G,G「&i&」,A:A,A「&i&」) 「' –

+0

不錯!!非常感謝:) – Jeofbist3