2014-05-12 175 views
2

我有下面的代碼,我得到運行時錯誤'1004'是它與文本作爲變量?我用盡也指的是直接包含我的病情,但有同樣的問題sumifs函數的VBA代碼

Sub sumifs() 
Dim Month_tally As Double 
Dim Monthrange As Range 

Set Monthrange = Range("B2:D5") 
Set months = Range("B1:D1") 
Set Prospects = Range("A2:A4") 

Range("B6").Formula = WorksheetFunction.sumifs(Monthrange, months, (May), Prospects, (CN)) 

End Sub 


May June July 

CN 456 2 2 NJ 2 2 2 BH 2 456 5647 BG 4567 2 2

+2

什麼是'(May)'和'(CN)'?如果他們是文本只是雙引號,而不是括號括起來像「WorksheetFunction.sumifs(Monthrange,months,」May「,Prospects,」CN「)' –

+0

是的,他們只是文本,但是,我也嘗試過雙引號和我得到同樣的錯誤。 – user3614197

回答

0

您的用戶定義的細胞函數可能以's'結尾,但Excel工作表函數只是'sumif',只需要3個參數:range,criteria,sum_range。也許你實際上是試圖做到這一點:

Range("B6").FormulaR1C1 = "=SUM( OFFSET(R[-4]C[-1], 0, MATCH(""May"", R[-5]C:R[-5]C[2], FALSE), 4, 1) )" 

編輯

OK,試試這個來代替:

Sub sumifs() 
    'Dim Month_tally As Double 
    Dim Monthrange As Range 
    Dim Months As Range 
    Dim CriteriaRange As Range 
    Set Monthrange = Range("A1:D5") 'Include the first column and header row 
    Set Months = Range("B1:D1") 
    Set CriteriaRange = Range("A10:A11") 
    'Set Prospects = Range("A2:A4") 

    Range("A1").Value = "Prospects" ' just to ensure first column has header 

    Range("A10").Value = "Prospects" 
    Range("A11").Value = "CN" 
    Range("B10").Value = "Column to sum" 
    Range("B11").Value = "May" 

    Range("B6").Value = WorksheetFunction.DSum(Monthrange, Range("B11"), CriteriaRange) 

End Sub 

當然,它通過透視表變得微不足道。你能得到結構爲3列的源數據:Prospects,Month,ProdQ​​ty?

+0

嗨有兩個函數,一個是sumif,其中你總結了一個變量和另一個總和,你可以在其中總結許多變量。我試圖實現的是總結兩個變量。我想知道每個潛在客戶在一個月內的產量。我一直在想,問題是否與數據存儲方式有關。這些月份被水平存儲在表格中,但潛在客戶被垂直存儲在表格中 – user3614197

+0

修訂是否修復了您的問題@ user3614197? – Apropos

+0

嗨,感謝幫助,當我看着代碼雖然它會工作,但是,它不正確地把「可能」和「CN」和「潛在客戶」放在我不想要的單元格中。我打算停一下然後回來。我已經設法以不同的方式得到我想要的結果,但不是我想要的結果 – user3614197

0

只需在WorksheetFunction.sumifs結尾刪除「s」並使用正確的語法。