尝试在MAX函数中包含if语句并在VBA中创建FOR循环。
我希望代码执行的操作是,当A列中的值等于列I中的值时,将列B中的MAX
值返回到新列。数据中也有超过1,000行设置,所以我需要一个循环。
以下是我正在使用的数据集的数据集的屏幕截图:
当我在我的数据集上执行以下代码(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循环中时,为什么我无法使该函数有效?
答案 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