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

时间:2017-11-11 03:01:56

标签: excel vba excel-vba

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

我希望代码执行的操作是,当A列中的值等于列I中的值时,将列B中的MAX值返回到新列。数据中也有超过1,000行设置,所以我需要一个循环。

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

Screenshot of data set

当我在我的数据集上执行以下代码(max_no_loop)时,我得到了我正在寻找的输出。但是,我想循环超过1,000行,所以我需要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循环中时,为什么我无法使该函数有效?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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