首页 > 解决方案 > 带公式的 For 循环

问题描述

我有下面的代码,我想在循环中使用它。但是,而不是C5and D5,我希望这个循环在 columnC和 column中的所有单元格上运行,D而不仅仅是 for C5and D5

总而言之,我希望C5D5被 Column 中的每个单元格CD. 请协助。

For i = 1 To 5
Valuex = Evaluate("=IsNumber(Value(Mid(C5, 2, 1)))")
MsgBox (Valuex)
Valuex1 = Evaluate("=Left(Trim(C5), 1) = ""R""")
MsgBox (Valuex1)

If ((Evaluate("=Left(Trim(C5), 1) = ""R""") = "True") And (Evaluate("=IsNumber(Value(Mid(C5, 2, 1)))") = "True")) Then

Range("D5").Formula = "=VLOOKUP(C5,[old.xls]Sheet1!$D:$V,19,0)"
MsgBox ("if")
Else
Range("D5").Formula = "=VLOOKUP(C5,[old.xls]Sheet1!$E:$V,18,0)"
MsgBox ("else")
End If
Next i

标签: vbaexcelfor-loop

解决方案


认为这可以满足您的要求。它将从 C 中的第 1 行运行到最后一行。请注意,您可以在没有 VBA 的情况下完成所有这些操作。

Sub x()

Dim i As Long, Valuex As Boolean, Valuex1 As Boolean

For i = 1 To Range("C" & Rows.Count).End(xlUp).Row
    Valuex = Evaluate("=IsNumber(Value(Mid(C" & i & ", 2, 1)))")
    MsgBox (Valuex)
    Valuex1 = Evaluate("=Left(Trim(C" & i & "), 1) = ""R""")
    MsgBox (Valuex1)
    If Valuex1 And Valuex Then
        Range("D" & i).Formula = "=VLOOKUP(C" & i & ",[old.xls]Sheet1!$D:$V,19,0)"
        MsgBox ("if")
    Else
        Range("D" & i).Formula = "=VLOOKUP(C" & i & ",[old.xls]Sheet1!$E:$V,18,0)"
        MsgBox ("else")
    End If
Next i

End Sub

我认为你可以完全避免循环

Sub xx()

Dim i As Long

i = Range("C" & Rows.Count).End(xlUp).Row

With Range("D1:D" & i)
    .Formula = "=IF(AND(ISNUMBER(VALUE(MID(C1, 2, 1))),LEFT(TRIM(C1), 1) = ""R""),VLOOKUP(C1,Sheet1!$D:$V,19,0),VLOOKUP(C1,Sheet1!$E:$V,18,0))"
    .Value = .Value
End With

End Sub

推荐阅读