|
本帖最后由 dingboy_VBA 于 2017-12-29 15:01 编辑
- =REPLACE(A1,SEARCH("很长*内容",A1),SEARCH("登记日期",A1)-SEARCH("很长*内容",A1),"")
复制代码
Replace和Substitute都不支持通配符*,但是Search可以,因此,用Search的结果来指定位置,用Replace来进行替换就可以了.
更复杂的也更强大的可以运用正则表达式来处理.- Function 提取日期(Rng As Range)
- 提取日期 = 提取内容("(\d+\s*年\s*\d+\s*月\s*\d+\s*日)", Rng.Text)
- End Function
- Function 提取内容(正则样式 As String, srcTxt As String, Optional NeededGroupIndex As Integer = 0) As String
- Dim v
- Set regex = CreateObject("Vbscript.Regexp")
- With regex
- .Global = True
- .IgnoreCase = True
- .MultiLine = True
- .Pattern = 正则样式
- Set v = .Execute(srcTxt) 'V的count对应匹配的处数,v(i)代表第i处匹配。v(i).submatches(j)代表匹配的第j-1个分组 。
- End With
- 提取内容 = ""
- If (v.Count = 0) Then
- 提取内容 = "#NOT FOUND#"
- Exit Function
- ElseIf (v.Count > 1) Then
- 提取内容 = "#TOO MANY MATCHES#"
- Exit Function
- Else
- 提取内容 = v(0).SubMatches(NeededGroupIndex)
- End If
- Set regex = Nothing
- End Function
复制代码
两种方式附件中都提供了,仅参考
|
|