我试图找出一种方法来提取由类似模式组成的字符串中的最后一个alpha +数字序列。序列是一个字母+数字对:一个字母字符串(一个或多个字母)加上一个数字字符串(一个或多个数字)。例如:
G98Y8RT9 - 我需要隔离" RT9"
H8L77 - 我需要隔离" L77"
D64RL19HT7899 - 我需要隔离" HT7899"
如上所示,在该对的每个部分中存在可变数量的字符以及在最后一个之前的对中的数量。我使用FIND,ISNUMBER等尝试过Excel公式,但我无法找出使其适用于这些变量的逻辑。
是否有一个有用的公式?或者是某种正则表达式的VBA函数要走的路?
答案 0 :(得分:1)
我认为这应该可行,作为用户定义的函数,您可以将其放在标准模块中,并将其称为:
=GetLastPair($A$1)
等
这是功能:
Function GetLastPair(str As String)
Dim numPart As Integer
Dim strPart As Integer
Do Until Not IsNumeric(Mid(str, Len(str) - numPart, 1))
numPart = numPart + 1
Loop
Do Until IsNumeric(Mid(str, Len(str) - numPart - strPart, 1))
strPart = strPart + 1
Loop
GetLastPair = Right(str, numPart + strPart)
End Function
结果:
答案 1 :(得分:1)
有点长的公式,但似乎有效:
=RIGHT(A1,MATCH(TRUE,ISNUMBER(1*MID(A1,LEN(A1)-MATCH(FALSE,ISNUMBER(1*MID(A1,LEN(A1)-{0,1,2,3,4,5,6,7,8},1)),0)-{0,1,2,3,4,5,6,7,8},1)),0)+MATCH(FALSE,ISNUMBER(1*MID(A1,LEN(A1)-{0,1,2,3,4,5,6,7,8},1)),0)-1)