如何将MAX和IF语句集成到VBA中的FOR循环中?
问题描述:
尝试在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
),我改变了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
答
您需要将公式"
以外的变量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
我粘贴代码到我的工作簿中,仍然有名字的错误。 – grantaguinaldo
它应该是'Cells(i,11).FormulaArray =“= MAX(IF(A:A =”&Cells(i,9).Address&“,B:B))”' –