作者:lkiouy_107 | 来源:互联网 | 2023-07-14 22:25
我来自以下问题:How to use Regular Expressions (Regex) in Microsoft Excel both in-cell and loops
在此找到了一个非常有用的链接:https://www.experts-exchange.com/articles/1336/Using-Regular-Expressions-in-Visual-Basic-for-Applications-and-Visual-Basic-6.html
这就是我在VBA中需要使用的功能。但是,我要解决的正则表达式如下所示:
OR(Q12 = "YES",Q13 = "ABCD",Q2 <> 3)
它将始终仅是OR
函数
我的excel工作表中有2列,如:
Table1
ColA ColB
Q1 YES
Q2 2
Q12 YES
Q13 ABCD
所以我想先建立n个群组:
Group1: Q12 = "YES"
Group2: Q13 = "ABCD"
Group3: Q2 <> 3
然后,我必须通过做一个正则表达式来解决每个这样的小组:
Group1-1: Q12
Group1-2: =
Group1-3: YES
然后我将在VBA代码中VLOOKUP(Q12,Table1,2,FALSE)
。
如果Group1-2
为“ =”,则为=
,否则为<>
Group1-3
这将表示Group1 = 1
对于所有n个组类似
TLDR:
输入:
OR(Q12 = "YES",Q2 <> 3)
输出:
Group1-1: Q12
Group1-2: =
Group1-3: "YES"
Group2-1: Q13
Group2-2: =
Group2-3: "ABCD"
Group3-1: Q2
Group3-2: <>
Group3-3: 3
非常感谢您!
Edit1:嘿,而不是Hye
根本不需要使用正则表达式:)只需删除逗号并按空格分隔即可:
Sub NoRegex()
Dim str As String,splitted() As String
str = "OR(Q12 = ""YES"",Q13 = ""ABCD"",Q2 <> 3)"
str = Replace(Replace(Replace(Replace(str,",""),"OR",")","(","")
splitted = Split(str," ")
End Sub
您将把所有块都放在一个数组中:)