如何将MAX和IF语句集成到VBA中的FOR循环中?

尝试在MAX函数中包含if语句,并在VBA中创buildFOR循环。

我想要的代码是当列A中的值等于列I中的值时,将B列中的MAX值返回到一个新列中。我在数据集中也有超过1,000行,因此我需要一个循环。

以下是我正在使用的数据集的数据集的屏幕截图 :

当我在我的数据集上执行下面的代码( max_no_loop ),我得到我正在寻找的输出。 然而,我想要循环1000行,所以我需要I2来改变每一步的整合。

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

想到它后,我想出了下面的函数( max_loop ),我把I2改成了Cells(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循环时,我无法使函数工作?

您需要像下面那样完全地将可变部分拉出来:

 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 

你需要把你的variables放在公式之外。

试试下面的代码:

 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