【问题标题】:Extract last alpha+numeric pair in a string in Excel在Excel中的字符串中提取最后一个字母+数字对
【发布时间】:2014-05-20 15:09:26
【问题描述】:

我正在尝试找出一种方法来提取由相似模式组成的字符串中的最后一个字母+数字序列。该序列是一个字母+数字对:一个字母字符串(一个或多个字母)加上一个数字字符串(一个或多个数字)。例如:

G98Y8RT9 -- 我需要隔离“RT9”

H8L77 -- 我需要隔离“L77”

D64RL19HT7899 -- 我需要隔离“HT7899”

如上所示,在对的每个部分以及最后一个之前的对的数量中都有可变数量的字符。我尝试过使用 FIND、ISNUMBER 等的 Excel 公式,但我无法弄清楚使其适用于这些变量的逻辑。

有没有有用的公式?或者是某种正则表达式 VBA 函数?

【问题讨论】:

  • @pnuts - 是的,问题是 L7 和 HT7899 也可能是最后一个字母/数字对。
  • 可以使用 VBA 中的InstrRev 函数解决这个问题...等一下...
  • @ashareef - 非常抱歉 - 我有一个额外的 G。它应该是 L77。我已经编辑了帖子。这就是我进行最后一秒编辑的结果。

标签: excel vba alphanumeric


【解决方案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

结果:

【讨论】:

    【解决方案2】:

    公式有点长,但似乎有效:

    =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)
    

    【讨论】:

      猜你喜欢
      • 2012-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-06
      • 1970-01-01
      • 1970-01-01
      • 2021-10-14
      相关资源
      最近更新 更多