2013-05-31 119 views
3

我正在嘗試在VBA中執行SUMIFS計算。當我在電子表格上輸入它時,它工作正常,但是當我嘗試將其轉換爲VBA時,它似乎不起作用。將excel sumifs公式轉換爲vba代碼

Sheets("Master").Range("B2:B" & Range("A" & Rows.Count).End(xlUp).Row).Formula = _ 
    "=SUMIFS(Input!C32,Input!C37,Master!C1,Input!C31,Master!R1C)" 

這是代碼的片段(最初在評論):

Dim LastRow As Long 
Dim rw As Long 
LastRow = Range("A" & Rows.Count).End(xlUp).Row 
For rw = 2 To LastRow 
    Sheets("Master").Cells(rw, 2).Value = Application.WorksheetFunction.SumIfs(Sheets("Input").Range("AF:AF"), Sheets("Input").Range("AK:AK"), Sheets("Master").Range("A:A"), Sheets("Input").Range("AE:AE").Sheets("Master").Range("B2")) 
Next 
+3

尋求和你應[找到](http://stackoverflow.com/search?q=vba+sumifs) –

+0

什麼「似乎沒有工作」? –

+0

我試圖運行此代碼直徑LASTROW只要 昏暗RW只要 LASTROW =範圍( 「A」 &Rows.Count).END(xlUp).Row 對於RW = 2至LASTROW 表格(「主」)。單元格(rw,2)。值= Application.WorksheetFunction.SumIfs(表格(「輸入」)。範圍(「AF:AF」),表格(「輸入」)。範圍(「AK (「A」),表格(「輸入」),範圍(「AE:AE」),表格(「主」),範圍(「B2」)。 ) Next – user2440270

回答

1

您沒有指定要在標準1中查找值。你必須指定一個值,而不是範圍。

你的總和範圍很好。

Sheets("Input").Range("AF:AF") 

您的標準range1很好。

Sheets("Input").Range("AK:AK") 

您的標準1需要是一個值,而不是範圍。

使用此Sheets("Master").Range("A2").value 代替Sheets("Master").Range("A:A")

很明顯,你可以在一個變量的標準1更換2,如果你需要讓你的循環工作。

+0

感謝您的幫助 – user2440270

+0

這是否解決了您的問題? –

+0

是非常感謝 – user2440270