【发布时间】:2016-11-20 03:37:43
【问题描述】:
我有一个大型嵌套 IF AND 语句,我想避免在 vba 中按原样使用它,因为它无法管理。
我将使用一个简单的例子:
Range("O2").Formula = "=IF(M2>TODAY(),""VALIDATED"",IF(AND(N2="""",M2=""""),""NEW ITEM"",IF(AND(N2=""NEW ITEM"",M2<TODAY()),""NOT VALIDATED"")))
我可以改用什么 VBA 代码,因为要添加更多的 IF 语句。另外我想避免使用循环,因为会有 1000 行。
更新...我添加了一些新代码,这些代码可以工作,但代码会通过每个单元格,并且会对宏的运行时间产生影响。有什么办法可以加快速度吗?
Set Col = Range("O2:O" & lastrowOU3)
For Each Cell In Col
If Cell.Offset(0, -2) = 0 And Cell.Offset(0, -1) = 0 Then Cell.Value = "NEW ITEM"
If Cell.Offset(0, -2) = 0 And Cell.Offset(0, -1) = "NEW ITEM" Then Cell.Value = "NOT VALIDATED"
If Cell.Offset(0, -2) < Date And Cell.Offset(0, -1) = "NEW ITEM" Then Cell.Value = "NOT VALIDATED"
If Cell.Offset(0, -2) < Date And Cell.Offset(0, -1) = "VALIDATED" Then Cell.Value = "NOT VALIDATED"
If Cell.Offset(0, -2) < Date And Cell.Offset(0, -1) = "NOT VALIDATED" Then Cell.Value = "NOT VALIDATED 1"
If Cell.Offset(0, -2) < Date And Cell.Offset(0, -1) = "NOT VALIDATED 1" Then Cell.Value = "NOT VALIDATED 2"
If Cell.Offset(0, -2) >= Date Then Cell.Value = "VALIDATED"
Next
任何帮助将不胜感激。
干杯,
康纳
【问题讨论】:
-
对不起,我忘了添加我想对该列中从第 2 行到最后一行的所有行应用相同的逻辑。
-
抱歉我不知道怎么上传
-
基本上如果 col M 大于今天,则 col O = "VALIDATED" 中的值
-
如果您想添加一些内容,请编辑您的问题。还将代码缩进 4 个空格,以便将其显示为代码。也许
If ... Then ... ElseIf ... Else是一个选项。Select Case也可能值得研究。不管怎样,如果你先把它写成 VBA 代码,可能更容易看出它可以改进的地方。 -
如果 col N 为空白,Col M 为空白,则 Col O = "NEW ITEM"
标签: vba if-statement nested conditional