如何通过Excel在字符串文本中提取数字?
工作中遇到需要在很一批字符串文本列表中,获取到每个字符串中的数字,可以通过MIDB函数和 SEARCHB函数配合使用,从字符串文本中批量提取数字,并把提取到的数字放入新建的单元格中。
SEARCHB函数
SEARCHB函数,用于从Start_num开始,以字节为单位不区分大小写地查找指定某个文本在文本中的位置。其中,全角字符占2个字节,半角字符占1个字节。这个函数和SEARCH函数的意义是相同的,不过是以字节为单位进行查找,而SEARCH函数是以字符为单位进行查找。
查找什么呢?这里要引入通配符,在函数界里通配符共用三个半角符号:
- 星号 *, 表示任何字符
- 问号 ? , 任何单字节字符
- 波形符号 ~ , 接触字符的通配性, 要查找前两者的本身时前面要加上波形符号“~”
所以,这里我们要用到的是“?”,因为我们要进行的是查找到第一个数字(半角符号 ) 的位置。
函数语法:
SEARCHB(find_text,within_text,start_num)
参数说明:
- find_text:表示要查找的文本。
- within_text:表示要在其中查找文本的文本。
- start_num:表示要开始查找的位置。

MIDB函数
MIDB函数都可以在指定的字符串中从指定的位置开始提取指定个数的字符。
函数语法:
MIDB(text,start_num,num_bytes)
参数说明:
- text:表示要从中提取指定字节数的文本。
- start_num:表示要提取字符的起始位置。
- num_bytes:表示要从开始位置开始提取字符的个数,按字节计算。

len(字符串)和lenb(字符串)函数
基本语法:
len(字符串) lenb(字符串) , 字符串是指包含数字、字母、符号等的一串字符。
Len是返回字符串的字符数,lenb是返回字符串的字节数。
准备存放提取出数字的单元格结构
首先在Excel中准备好存放从字符串文本中提取出数字的单元格结构

输入提取数字的函数公式
在B2单元格中输入从字符串文本中提取数字的函数公式;
=MIDB(A2,SEARCHB("?",A2),2*LEN(A2)-LENB(A2))
SEARCHB(“?”,A2):从位置1开始查找,查找A2单元格字符串中,第一个单字节字符(这里单字节字符只有数字)的位置
2*LEN(A2)-LENB(A2)):单字节字符的个数

得到提取数字的第一个结果
按下回车键Enter即可在B2单元格内得到从字符串文本中提取数字的第一个结果。

拉伸填充提取所有记录的数字
点击B2单元格右下角的绿色实心方块,往下拖拽直至B5单元格松开鼠标

完成数字的提取
我们可以在B2:B5中看到从字符串文本中提取数字的结果

厉害阿,非常感谢