没有VBScript,可以在Excel中执行正则表达式吗?


22

我正在寻找一个Excel函数,可以将其放在一个单元格中以对另一个单元格的内容进行正则表达式搜索。有什么可做的吗?我不希望为此而在电子表格中添加VB脚本,因为我可以更快地对解决方案进行硬编码。只是最快的解决方案就是功能。我找不到一个。所以也许什么都没有。

有人知道吗

Answers:


12

您只需在VBE中添加对“ Microsoft VBScript正则表达式5.5”的引用即可将VBScript.dll regex函数公开给Excel。这样,编写一个简单的正则表达式函数就变得微不足道了,例如

Public Function emailCheck(rawEmail As String) As Boolean
    Dim reg As New RegExp
    reg.Pattern = "^[\w-\.]{1,}\@([\da-zA-Z-]{1,}\.){1,}[\da-zA-Z-]{2,4}$"
    emailCheck = False
    If reg.Test(rawEmail) Then
        emailCheck = True
    End If
End Function

您能解释一下如何添加参考吗?
克里斯·沃尔什


3

MoreFunc.xll是具有Regex功能的免费加载项

还有一些其他第三方加载项也可以执行Regex。

没有真正的本机工作表函数可以执行此操作,但是如果您要进行特定的搜索,则可能可以使用其他函数来完成工作。


感谢您的确认。我找到了那个库,但是我们希望有一些不需要我们分发库的东西。
艾里克·罗伯逊

@Erick,是的,我讨厌将加载项添加到电子表格中,这很难跟踪它们。除非您需要完全的正则表达式灵活性,否则您可以使用其他功能来完成这项工作。Excel中有很多技巧。在此处发布特定请求。
兰斯·罗伯茨

2

这是一个给出特定单元格中正则表达式匹配数的函数:

Public Function regexCount(regex As String, ref As Range) As Integer
    Dim reg As New RegExp
    reg.Global = True
    reg.Pattern = regex
    regexCount = reg.Execute(ref.Value).Count
End Function

(需要添加对“ Microsoft VBScript正则表达式5.5”的引用-只需从VBA编辑器转到“工具”->“引用”,然后选中该引用的复选框即可。)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.