gpt4 book ai didi

VBA 中的正则表达式组中的正则表达式

转载 作者:行者123 更新时间:2023-12-04 22:24:44 29 4
gpt4 key购买 nike

我来自这个问题: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

然后我会 VLOOKUP(Q12, Table1, 2, FALSE)在 VBA 代码中。
如果 Group1-2是“=”,那么 = , 否则 <> Group1-3
这意味着 Group1 = 1
对于所有 n 组同样如此

TLDR:

输入:
OR(Q12 = "YES", Q13 = "ABCD", 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

您将所有的 block 都放在一个数组中:)

关于VBA 中的正则表达式组中的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58990227/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com