vba - 带公式的 For 循环
问题描述
我有下面的代码,我想在循环中使用它。但是,而不是C5
and D5
,我希望这个循环在 columnC
和 column中的所有单元格上运行,D
而不仅仅是 for C5
and D5
。
总而言之,我希望C5
和D5
被 Column 中的每个单元格C
和D
. 请协助。
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
解决方案
认为这可以满足您的要求。它将从 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
推荐阅读
- android - 是否可以更改 android 内置的 midi 播放器弯音范围?
- react-native - 如何在 rxjs 6 中订阅多个 observable?do 不是 rxjs 6 中的函数
- postgresql - PostgreSQL:只允许用户执行程序,但避免访问任何其他资源,例如表?
- azure - ASP.NET Core 身份、Azure SQL 数据库备份和 GDPR 数据删除请求
- c++ - 如何理解cout的默认格式
- assembly - 带有 YMM 寄存器的 AVX 中的 STRLEN 函数说明
- python - 学习熊猫数据框的预期输出
- python - 如何在网页 http://architects-register.org.uk/list/regions 中使用 Selenium 和 Python 点击按钮 A 到 Z
- infiniband - OFED、MLNX OFED 和收件箱驱动有什么区别
- javascript - 离子/角度发送短信到数组中的多个号码