没有 VBScript 你能在 Excel 中执行正则表达式吗?

没有 VBScript 你能在 Excel 中执行正则表达式吗?

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

有人知道吗?

答案1

您只需在 VBE 中添加对“Microsoft VBScript Regular Expressions 5.5”的引用,即可将 VBScript.dll 正则表达式函数公开给 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

答案2

.xla 包位于本网站对我来说非常有效。

答案3

更多函数是一个具有 Regex 功能的免费插件。

还有一些其他第三方插件也可以执行正则表达式。

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

答案4

以下是我如何通过正则表达式替换从单元格中提取数字:

Function REGREP(value As Range, searchString As String, replaceString As String,
  Optional ignoreCase As Boolean = True, Optional searchGlobal As Boolean = True)
  'Dim reg As New RegExp
  Dim reg As Object
  Set reg = CreateObject("vbscript.regexp")
  reg.ignoreCase = ignoreCase
  reg.Global = searchGlobal
  reg.Pattern = searchString
  REGREP = reg.replace(value.value, replaceString)
End Function
Function ASNUM(value As Range)
  ASNUM = REGREP(value, "[^0-9.]+", "")
End Function

'Usage:
REGREP(A1, "[^0-9.]+", "")
ASNUM(A1)

笔记首先,您需要使用 在 Excel 中打开 Visual Basic Alt + F11然后单击Tools -> References,向下滚动到Microsoft VBScript Regular Expressions 5.5,然后将其添加进去。RegExp输入后就会显示出来。

您需要将文件保存为 Excel 启用宏的工作簿 (*.xlsm),以便保留宏...您还可以导出和导入您的代码模块。

相关内容