从文本string中提取最后一个数字

在单元格A1:A13有以下文本。 我想从string中提取最后一个数字。 正如你所看到的,一些string包含了几个数字,其中一些带有前导零,一些带有斜线空格,另外一些string只带有斜线,一些字符以其他字符结尾。

我宁愿用公式来做这件事,而不是使用VBA脚本。

 MC HOPE / 0217
 MC休斯顿(BTL-020)/ 2737
 MC HWY 69 S. [ALLTEL] / 5910
 MC I-475&HAMILTON / 0380 [EBH]
 MC I496 EAST / 0415 [在线纤维 -  EBH]
 MC I675 / 0267
 MC I-675 HERZNER [ALLTEL] / 0249
 MC I-69&BROADWAY [ALLTEL] / 5404
 MC I69&DORT HWY / 0309 [EBH]
 MC I69&GRAND TRAVERSE / 0384 [EBH]
 MC I69&I94 / 2472
 MC I69&I94 II [ALLTEL] / 5847
 MC I69&M15 / 0327 

应该拿出来:

  217
 2737
 5910
 380
 415
 267
 249
 5404
 309
 384
 2472
 5847
 327

不从OP编辑

每个评论:“有些项目有多个斜线。”

如果数字是在数字后面紧跟的唯一数字,并且数字中的位数不确定,则可以使用以下公式:

 =MID(A1,FIND("/",A1)+1,IFERROR(FIND("[",A1,FIND("/",A1))-FIND("/",A1)-1,LEN(A1)))*1 

在这里输入图像说明

编辑:对于多个正斜杠,你可以试试这个“怪物”公式:

 =MID(A2,FIND(CHAR(1),SUBSTITUTE(A2,"/",CHAR(1),LEN(A2)-LEN(SUBSTITUTE(A2,"/",""))))+1,IFERROR(FIND("[",A2,FIND(CHAR(1),SUBSTITUTE(A2,"/",CHAR(1),LEN(A2)-LEN(SUBSTITUTE(A2,"/","")))))-FIND(CHAR(1),SUBSTITUTE(A2,"/",CHAR(1),LEN(A2)-LEN(SUBSTITUTE(A2,"/",""))))-1,LEN(A2)))*1 

我知道你想避免VBA,但为了完整性,我添加了一个解决scheme。

好处是你可以使用正则Regex ,这是非常适合你的任务。 它的工作基于您提供的数据集。

 Sub GetLastDigits() Dim Entries As Range, entry As Range Dim RegEx As Object, Matches As Object, Match As Object Set Entries = Range("A1:A12") //Set this as per your s/sheet set-up Set RegEx = CreateObject("vbscript.regexp") With RegEx .MultiLine = False .Global = True .IgnoreCase = True .Pattern = "(\d+)" //Match any set of digits End With For Each entry In Entries Set Matches = RegEx.Execute(entry) If VBA.Left(Matches(Matches.Count - 1), 1) = 0 Then entry.Offset(0, 1) = VBA.Right(Matches(Matches.Count - 1), Len(Matches(Matches.Count - 1)) - 1) Else entry.Offset(0, 1) = Matches(Matches.Count - 1) End If Next entry End Sub 

有可能是一个更有效的公式,但build立在Santosh的解决scheme此公式将数字转换为hex,并回到十进制,通过删除前导零。

 =HEX2DEC(DEC2HEX(MID(A1,SEARCH("/",A1)+1,5),4)) 

编辑来解决多个斜杠:

解决scheme#1

 =HEX2DEC(DEC2HEX(MID(A1,FIND("|",SUBSTITUTE(A1,"/","|",LEN(A1)-LEN(SUBSTITUTE(A1,"/",""))))+1,5),4)) 

解决scheme#2

正如pnuts *1所指出的,可以取代HEX2DEC和DEC2HEX来缩短公式。

 MID(A1,FIND("|",SUBSTITUTE(A1,"/","|",LEN(A1)-LEN(SUBSTITUTE(A1,"/",""))))+1,5)*1 

=MID(A1,FIND("|",SUBSTITUTE(A1,"/","|",LEN(A1)-LEN(SUBSTITUTE(A1,"/",""))))+1,5) 。 拖动它直到结束。 然后,您可以手动格式化结果列以删除前导零。

在这里输入图像说明

试试这个(放在B1中):

=1*LEFT(TRIM(RIGHT(SUBSTITUTE(A1,"/",REPT(" ",99)),99)),4)