对于字符串“Johnny#-ANF14112-26406TAG8-Bob: Frank Johnny#”,我尝试提取“26406TAG8”。挑战在于分隔符并不总是“-”。它可能是空格、冒号等,我只想要前连续 9 个字母数字值。我尝试过的公式给我带来了像 JohnnyANF 这样的东西,或者它第一次起作用,但一旦分隔符改变它就不起作用。
此外,我想避免使用数组公式,但愿意接受 VBA 解决方案。
=MID(A1, FIND("-", A1, FIND("-", A1) + 1) + 1, 9)
使用 RegExp 提取前连续 9 个字母数字字符
Sub ExtractAlphanumeric()
Dim strInput As String
strInput = "Johnny#-ANF14112-26406TAG8-Bob: Frank Johnny#"
Dim objRegExp As Object
Set objRegExp = CreateObject("VBScript.RegExp")
With objRegExp
.Pattern = "(\w{9})"
.Global = False
End With
Dim objMatches As Object
Set objMatches = objRegExp.Execute(strInput)
If objMatches.Count > 0 Then
Debug.Print objMatches(0).SubMatches(0)
Else
Debug.Print "No match found"
End If
Set objRegExp = Nothing
End Sub