除了@RolandSmith所写的,这里还有一种在Excel-VBA中使用正则表达式的方法Option Explicit
Function ExtractSpecial(S As String, Index As Long) As String
Dim RE As Object, MC As Object
Const sPat As String = "([a-z]+)\s+(special)\s+([^a-z]+)"
Set RE = CreateObject("vbscript.regexp")
With RE
.Global = True
.ignorecase = True
.MultiLine = False
.Pattern = sPat
If .test(S) = True Then
Set MC = .Execute(S)
ExtractSpecial = MC(0).submatches(Index - 1)
End If
End With
End Function
此UDF中的Index参数对应于从match集合返回第1、第2或第3个子匹配,因此可以轻松地将原始字符串拆分为三个所需的组件。在
既然你写你有“数千行”,你可能更喜欢运行一个宏。宏将更快地处理数据,但不是动态的。下面的宏假设原始数据在Sheet2的A列中,并将结果放在同一工作表的C:E列中。您可以轻松更改这些参数:
^{pr2}$