Excel VBA逻辑运算符不是通配符*
我正在努力与Excel运算符我花了一段时间search我感觉好像我是接近我试图编码这个If语句,如果值不以722 *开始,并不等于PI然后执行代码下面马上否则在else语句下执行代码。
If Not CStr(Cells(r, cC)) = "722*" And Not CStr(Cells(r, cS)) = "PI" Then
最简单的方法是使用Left
If Not Left(CStr(Cells(r, cC),3) = "722"
如果你想使用通配符,使用Like
:
If Not Cells(r, cC)) Like "722*" Then
比较他们=
对待*
只是作为一个字符。
Edit2:显然我错了Like的计算工作。 喜欢似乎是更快的方法(在这种情况下),特别是如果没有匹配(懒惰评估我猜)。 很显然,在这两种情况下,总的CPU和内存使用量都非常小,以至于您可以select哪一种。
这是我发现的: s Like "722*"
比Left(s,3) = "722"
s Like "*722"
比Right(s,3) = "722"
慢
s Like "*722*"
比Instr(1,s,"722")>0
慢
差异的大小取决于string的长度以及是否匹配(例如, s Like "722*"
非常快,如果s
不以7
开头, Left
和Right
不会像Like
你用更长的东西代替“722”)