2014-05-20 147 views
-1

我想弄清楚一種方式來提取由類似模式組成的字符串中的最後一個字母+數字序列。該序列是一個alpha +數字對:一個字符串(一個或多個字母)加數字字符串(一個或多個數字)。例如:提取在Excel中的字符串中的最後一個字母+數字對

G98Y8RT9 - 我需要隔離 「RT9」

H8L77 - 我需要隔離 「L77」

D64RL19HT7899 - 我需要隔離 「HT7899」

由於如上所示,在該對的每個部分中以及在最後一個之前的對的數量中存在可變數量的字符。我已經嘗試了使用FIND,ISNUMBER等的Excel公式,但是我無法弄清楚使它適用於這些變量的邏輯。

有沒有一個公式可以幫助?或者是某種正則表達式的VBA函數要走的路?

+3

如果你只是想最後三個字符,你試過= RIGHT(A1,3),或者是像'L7'可能嗎? – pnuts

+0

@pnuts - 是的,問題是L7和HT7899也可能是最後一個字母/數字對。 –

+0

可以使用VBA中的'InstrRev'函數解決這個問題...給我一分鐘... –

回答

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 

結果:

enter image description here

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) 
相關問題