广告合作
  • 今日头条

    今日头条

  • 百度一下

    百度一下,你就知道

  • 新浪网

    新浪网 - 提供新闻线索,重大新闻爆料

  • 搜狐

    搜狐

  • 豆瓣

    豆瓣

  • 百度贴吧

    百度贴吧——全球领先的中文社区

  • 首页 尚未审核订阅工具 订阅

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

    来源:网络收集  点击:  时间:2024-07-26
    【导读】:
    当我们进行公务办公时用到excel软件,在批量处理一堆数据,我们免不了要进行求简归纳汇总处理,有时就会碰到单独提取字符串中的数字串,以便排序或汇总,本次就是 详细介绍三种提取字符串的方式。工具/原料moreExcel办公软件方法/步骤1/3分步阅读

    方式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查找就第一单字节就是从字母开始,最后整个提取都没有数字了,就会返回错误;

    2/3

    方式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出数字串.

    3/3

    方式3

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

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

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

    FIND({0,1,2,3,4,5,6,7,8,9},C70123456789)

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

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

    MIN(FIND({0,1,2,3,4,5,6,7,8,9},C70123456789))

    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},C70123456789)),ROW(INDIRECT(1:LEN(C7)))))

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

    注意事项

    本次介绍以上提取的都是第一次出现的连续数字串,后面出现的数据以上方式无法提取,建议可以再结合替换函数进行

    本文关键词:

    版权声明:

    1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。

    2、本站仅提供信息发布平台,不承担相关法律责任。

    3、若侵犯您的版权或隐私,请联系本站管理员删除。

    4、文章链接:http://www.ff371.cn/art_1008401.html

    相关资讯

    ©2019-2020 http://www.ff371.cn/ 国ICP备20009186号05-16 08:09:47  耗时:0.033
    0.0333s