2017-11-11 83 views
0

嘗試在MAX函數中包含if語句並在VBA中創建FOR循環。如何將MAX和IF語句集成到VBA中的FOR循環中?

我想要的代碼是當列A中的值等於列I中的值時,將列B中的MAX值返回到新列。我在數據集中也有超過1,000行,因此我需要一個循環。

這裏是數據集我的工作的Screenshot of data set

當我執行我的數據集下面的代碼(max_no_loop),我得到的是我期待的輸出。但是,我想循環1000行以上,所以我需要I2隨着集成的每一步而改變。

Sub max_no_loop() 

    Range("K2").FormulaArray = "=MAX(IF(A:A=I2,B:B))" 

End Sub 

考慮這件事後,我想出了一個具有如下功能(max_loop),我改變了I2Cells(i, 9),但是,當我在我的數據運行的功能,我得到的名字錯誤(#NAME?)和唐」無法獲得理想的結果。

Sub max_loop(): 

Dim i As Integer 

For i = 2 To 11 
    Cells(i, 11).FormulaArray = "=MAX(IF(A:A=Cells(i, 9),B:B))" 
Next i 

End Sub 

爲什麼我無法使功能工作時,我將它集成到一個for循環?

回答

1

您需要完全拔出可變部分象下面這樣:

Sub max_loop(): 

Dim i As Integer 

For i = 2 To 11 
    Cells(i, 11).FormulaArray = "=MAX(IF(A:A=" & Cells(i, 9).Address & ",B:B))" 
Next i 

End Sub 
0

您需要將公式"以外的變量i

嘗試下面的代碼:

Sub max_loop(): 

Dim i As Integer 

For i = 2 To 11 
    Cells(i, 11).FormulaArray = "=MAX(IF(A:A=Cells(" & i & ", 9),B:B))" 
Next i 

End Sub 
+0

我粘貼代碼到我的工作簿中,仍然有名字的錯誤。 – grantaguinaldo

+1

它應該是'Cells(i,11).FormulaArray =「= MAX(IF(A:A =」&Cells(i,9).Address&「,B:B))」' –