2017-11-11 58 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))”' –