在Excel中从字符串中提取数字

qzwqbdag  于 2023-05-30  发布在  其他
关注(0)|答案(3)|浏览(161)

我想在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),而忽略从左边开始的任何内容,即使它是一个数字?

qhhrdooz

qhhrdooz1#

例如,在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)),"")
dvtswwa3

dvtswwa32#

试试这个功能,例如= F编号(A1)或= F编号(“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

ef1yzkbh

ef1yzkbh3#

添加基础配方溶液。

{=TEXTJOIN(" - ";TRUE;IFERROR(INT(MID(A1; {1;2;3;4;5;6;7;8;9;10}; 1));""))}

相关问题