我想从excel中的字符串中提取一系列数字。
ZERINER JERNIGAN 123-45-6789
我使用的公式:
right(trim(A1), len(trim(A1)-MIN(FIND({0,1,2,3,4,5,6,7,8,9},trim(A1)&"0123456789")) + 1)
它将返回123-45-6789
但是当我遇到
这样的示例时3ES INNOVATION INC 12-3456789
该函数将捕获9作为第一个数字,而不是1。
有什么方法可以仅捕获字符串(12-3456789
)的右侧并忽略从左侧开始的任何内容,即使它是一个数字?
谢谢!
答案 0 :(得分:1)
例如在B1中使用:
=TRIM(RIGHT(SUBSTITUTE(A1," ",REPT(" ",255)),255))
检查是否有数字
=COUNT(FIND({0,1,2,3,4,5,6,7,8,9},A1))>0
在IF中合并两个:
=IF(COUNT(FIND({0,1,2,3,4,5,6,7,8,9},TRIM(RIGHT(SUBSTITUTE(A1," ",REPT(" ",255)),255))))>0,TRIM(RIGHT(SUBSTITUTE(A1," ",REPT(" ",255)),255)),"")
答案 1 :(得分:0)
尝试使用此功能,例如= FNumbers(A1)或= FNumbers(“ 3ES INNOVATION INC 98-0485843”)。
我不确定是否已列举所有可能性。正如Rawrplus所建议的那样,我已经假设至少有一个空格将数字从后面开始隔开。
Function FNumber(s As String) As String
With CreateObject("VBScript.RegExp")
.Global = True
.Pattern = ".\s(\d+-*\d+)"
If .Test(s) Then FNumber = .Execute(s)(0).submatches(0)
End With
End Function