EXCEL如何提取连续数字字符串的公式详解

2025-09-29 22:43:43

1、方式1比较简单,用到了lookup、row、SEACHB以及MIDB函数。

SEACHB函数是查找单字节(也就是字母或数字等)的第一次出现的的位置,以这个为准作为起始位置截取一定长度的字符串(MIDB),这是就用到ROW函数,在公式中ROW($1:$19)={1;2;3;4;5;6;7;8;……}即1-19个长短不一的长度,这三个公式组合如下:midb(被提取的字符串a2,seachb("?",a2),row($1:$19))  

例如字符串为: 产品号1257型,那么

midb(被提取的字符串a2,seachb("?",a2),row($1:$19))  

={1,12,125,1257,1257型}

(函数的结果是一组数据集合)

这个时候用到lookup函数,使用该函数的区域必须升序排列,

lookup(0,-midb(被提取的字符串a2,seachb("?",a2),row($1:$19)))

表示返回-midb结果在最接近0的值即-1257,

最后整体公式在进行负数转换就负负得正了

缺点就是数字前面不能是字母,不然seachb查找就第一单字节就是从字母开始,最后整个提取都没有数字了,就会返回错误;

EXCEL如何提取连续数字字符串的公式详解

2、方式2 理解略微比较绕 ,用到了MID()、MATCH()、COUNT()、ISNUMBER()函数。

主要是将字符串遍历找到第一数字出现的位置,然后根据row提取一定长度。

1)将mid将字符串一字一字拆分 :mid(A2,row($1:$9),1)

2)将拆分的字符串一字一字的判断是否为数值,是返回true,否返回false

     ISNUMBER(1*MID(a2,ROW($1:$9),1))

用1*是表示将文字转为错误值#value

3)查找出现第一个true的位置

      MATCH(TRUE,ISNUMBER(1*MID(a2,ROW($1:$9),1)),0)

4)判断拆分的一字一字集合里有几个是数值,到时截取这个长度

     COUNT(1*MID(a2,ROW($1:$9),1))

5)最终组成以下函数,因为函数里有用到集合,最终需要同时按ctrl+shift+enter退出函数以完成操作

{=1*MID(a2,MATCH(TRUE,ISNUMBER(1*MID(a2,ROW($1:$9),1)),0),COUNT(1*MID(a2,ROW($1:$9),1)))}

缺点就是被提取的字符串不能出现2出数字串.

EXCEL如何提取连续数字字符串的公式详解

3、方式3

比较不好理解,用到了LOOKUP()、MID()、MIN()、FIND()、ROW()、INDIRECT()、LEN()等函数。

但优点是被提起的字符串组成无要求

1)先将字符串跟0-9的数字连接,这样使用find函数不会返回错误值

FIND({0,1,2,3,4,5,6,7,8,9},C7&"0123456789")

表示0-9在字符串分别处在什么位置

2)查出现第一个数字的位置,使用min+find的函数,即不再1)返回的最小值就是第一个位置

MIN(FIND({0,1,2,3,4,5,6,7,8,9},C7&"0123456789"))

3)确定要截取的最大长度

ROW(INDIRECT("1:"&LEN(C7)))

用len()就是确定字符串有多长

如果c7有6个字符的长度,那么

ROW(INDIRECT("1:"&LEN(C7)))

=row(inderect("1:6")

={1;2;3;4;5;6}

4)再用mid截取长度分别为{1;2;3;4;5;6}的字符串

5)最后用lookup匹配字符串中的最大值

=LOOKUP(9E+205,--MID($C7,MIN(FIND({0,1,2,3,4,5,6,7,8,9},C7&"0123456789")),ROW(INDIRECT("1:"&LEN(C7)))))

其中,用到--这个双负号的用途:先用一个负号“-”将截取的字符串(为文本格式)转化为数字(,再将数字转化为正数。

EXCEL如何提取连续数字字符串的公式详解

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢