我正在尝试使用like函数来区分以2或3个数字后跟更多空白字符开头的单元格(白色空格字符除外),但似乎无法识别后者。例如,对于两个单元格,一个包含
11一些文字
和另一个包含
111一些文字
我一直试图写一个if语句,对于第一个而不是第二个是真的。我试过了
if cells(i,1) like "*##[ ]*" then
和
if cells(i,1) like "*##\s*" then
和
if cells(i,1) like "*##[^#]*" then
以下有关使用各种来源的正则表达式的信息(前两个我试图识别2个数字后跟一个空格字符,第三个2个数字后跟一个非数字)。
它是for循环的一部分,并且如上例所示,唯一的数字位于字符串的开头,而不是有时是空格字符。在第一个代码示例中,if语句对于2和3数字都是真的,对于第二个和第三个数字,对于两个都不是。鉴于我所读到的有关正则表达式等函数的内容,我不明白这一点。
我非常感谢指导。我希望这个相对简单,所以我确定我错过了一些明显的东西,如果是这样的话,我会道歉。
答案 0 :(得分:7)
VBA之类的运营商并不支持RegEx。相反,它有自己的格式。空格使用文字值进行匹配,不需要转义。
Input Op Pattern Result
"11 Some Text" LIKE "## *" True
"11Some Text" LIKE "## *" False
有关详情,请参阅Microsoft's documentation。
如果您更愿意使用RegEx,请查看此answer。 @PortlandRunner已经花时间制作了一本很棒的指南,包括很多例子。
答案 1 :(得分:1)
我仔细阅读了此MSDN网站上的资料,这似乎对我有用。
If Cells(i, 1).Value Like "## *" Then
Debug.Print ("Match")
ElseIf Cells(i, 1).Value Like "### *" Then
Debug.Print ("Match")
End If