【发布时间】:2017-12-12 06:12:39
【问题描述】:
我需要帮助才能让我的 Excel 函数正常工作。目标是运行一个单元内函数,将正则表达式函数的所有模式匹配从另一个单元格的输入提取到一个单元格中,而不是单元格数组。
我已经尝试过使用一个数组,该数组在函数对话框预览中返回两个匹配项,但只输出单元格中的第一个匹配项。我也尝试过使用集合,但没有运气。
这是我当前的代码和将用作函数的字符串输入的文本示例:
Function RegexMatches(strInput As String) As Variant
Dim rMatch As Match
Dim arrayMatches
Dim i As Long
arrayMatches = Array()
With New RegExp
.Global = True
.MultiLine = True
.IgnoreCase = True
.Pattern = "(Code)[\s][\d]{2,4}"
For Each rMatch In .Execute(strInput)
ReDim Preserve arrayMatches(i)
arrayMatches(i) = rMatch.Value
i = i + 1
Next
End With
RegexMatches = arrayMatches
End Function
Excel 单元格中的 strInput 示例:
代码 123 一些随机文本
到这里继续下一行
代码 4567 后跟更多文本
包括换行而不仅仅是换行的文本
此函数的所需输出将是 (2) 来自正则表达式函数的匹配值到 单个单元格(例如“代码 123 代码 4567”)。
非常感谢任何帮助!
【问题讨论】:
-
连接匹配值,然后返回这个修剪后的字符串。
-
@Mat'sMug 看看这个screen shot
-
@WiktorStribiżew 这就是我在概念上的想法,但我不知道如何使用 VBA 代码在函数中做到这一点。
-
@Mat'sMug 感谢您的洞察力,我错过了复制/粘贴的最后三行。我现在就更正一下。