2016-12-16 94 views
0
Dim i As Integer, j As Integer, k As Integer, l As Integer 

i = ActiveSheet.PivotTables(1).TableRange2.Rows.Count + 1 
j = ActiveSheet.PivotTables(1).TableRange2.Columns.Count 
k = ActiveSheet.PivotTables(1).TableRange2.Rows.Count - 7 

For l = 2 To j 
    Cells(i + 2, l).Value = WorksheetFunction.SumIf(Range(Cells(9, l), Cells(i, l)), ">0", Range(Cells(9, l), Cells(i, l))) 
Next l 

嗨,我想在vba中使用sumif函數。重點是在循環中執行此操作,這取決於列數。我現在實際上並不是這裏出了什麼問題,但我認爲這可能與我所採用的標準有關。我想總結所有數字高於0的單元格,並且不知道如何編寫它。Sumif標準與for循環在VBA

+0

但你裏面'SumIf'的範圍'範圍(單元格(9,2),電池(1,2))'是不是有先進的'對於循環,它總是列B.你是否指Range(單元格(1,2),單元格(i,2))'?或類似的東西? –

+0

這是這樣的,抱歉: 'Cells(i + 2,l).Value = WorksheetFunction.SumIf(Range(Cells(9,1),Cells(i,l)),「> 0」,Range (9,l),Cells(i,l)))' – Cezary

+0

仍然不能正常工作,只是要清楚 – Cezary

回答

-1

如果您SumIf您正在使用您正在使用的標準比較範圍(>0),也爲的範圍來概括,也沒有必要添加它裏面的作爲第三個參數的是SumIf

你可以用下面的代碼去:

For l = 2 To j 
    Cells(i + 2, l).Value = WorksheetFunction.SumIf(Range(Cells(9, l), Cells(i, l)), ">0") 
Next l 
+0

仍然無法正常工作,但感謝您的輸入 – Cezary

+0

@Cezary它對我有用,對'j'和'i'有什麼價值?我認爲你沒有從你的'PivotTable'數據表中得到你想要的值 –

+0

好,現在就開始工作,非常感謝 – Cezary

0

使用以下功能。沒必要用「*」比較

Cells(i + 2, l).Value = Aplication.WorksheetFunction.SumIf(Range(Cells(9, 2), Cells(i, 2)), "> 0", Range(Cells(9, 2), Cells(i, 2))) 
+0

仍然不工作,甚至沒有出現錯誤,只是代碼沒有執行 – Cezary

+0

嘗試使用「> 0」而不是「> 0 」。 –