编按:哈喽,大家好!有没有能把任何文本中包含的所有数字都提取出来的公式?当然是有的,今天就给大家带来提取数字的万能公式,不管数字在文本中的位置是否有规律,不管文本中数字有多少,它都能把数字提取出来。赶紧来看看吧!学习更多技巧,请收藏关注部落窝教育excel图文教程。


在上一篇文章中,小花讲解了通过观察混合文本特征,设置特定公式,完成数据提取的三种情景。于是,有些小花瓣悄悄跟小花说:小花老师,我笨,看不出数据特征,我又懒,不想分情景设置不同公式,有没有那种霸王级万能公式,啥混合文本咱都可以硬上弓?

答案自然是,有的!不过,还是要区分两种情况。一种是提取数值,有正负之分大小之别,也有小数点;另一种是提取数字字符串,如电话号码、身份证号码等,这里的数字没有小数和负号,也没大小之分。

这两种情景的万能公式分别该怎么写,又该怎么理解呢?且听小花细细道来。

四、提取数值的万能公式

情景特征:除了目标数值,文本中不存在其他数字,否则容易产生干扰。

万能公式:

{=-LOOKUP(9^9,-MIDB(A2,MIN(FINDB(LEFT(ROW($1:$11)-2,1),A2&-1/19)),ROW($1:$100)))}

公式详细拆解如下:

①LEFT(ROW(1:11)-2,1)

ROW(1:11)很好理解,返回第1行到第11行的行号,也就是11个字符组成的集合A{1,2,3…11},-2则变为字符集B{-1,0,1,2…9}。再通过LEFT提取字符集B左侧的第一个字符,生成字符集C{"-",0,1,2,…9},也就是符号和0-9这十个字符,所有数值,均由这11个字符构成。

综上,该部分的功能就是构建阿拉伯数字全部字符,这些数字有助于我们锁定位置,进而提取阿拉伯数值。

②FINDB(①,A2&-1/19)

FINDB是查找字符所在目标文本中的位置,它与FIND的差异是,它返回字节序号,即把汉字和中文符号视为2个字节。由此可知,A2单元格混合文本中,负号“-”出现的位置是5,而不是3。

该公式中使用了A2&-1/19是为了确保字符集C{"-",0,1,2,…9}的每一个字符均在FIND的查找文本中出现,确保FIND的返回值不存在错误值。片段②返回字符集C{"-",0,1,2,…9}在A2&-1/19出现的位置,即序数集D{5,13,10,6,…}

③MIN(②)

MIN(②)取②的结果序数集D{5,13,10,6,…}中的最小值,它就是目标数值在A2中的起始位置,即A2混合文本中,首次出现负号或阿拉伯数字的位置,即是目标提取数值的起始位置。这就是为什么要求目标数字的左侧,不能有无关的阿拉伯数字或负号的原因。

④-MIDB(A2,③,ROW($1:$100))

这里使用MIDB,而不是MID,是为了对应FINDB,通过字节位置截取部分文本。ROW($1:$100)返回有序数组{1-100},作为MIDB函数的第三个参数——要提取的字节数,即分别提取1-100个字符。学习更多技巧,请收藏关注部落窝教育excel图文教程。

于是,MIDB函数的功能就是从③确定的起始位置开始,分别从A2单元格文本中截取长度为1-100个字节的100个不等长字符串E{"-","-2","-29","-299",…"-299.19"}。而-MIDB则是将不等长字符串执行减法运算,使得非数值数据因无法运算而报错为#VALUE!,进而将不等长字符串E转化为纯数字和错误值#VALUE!组成的新常量数组F{#VALUE!;2;29;299;299;299.1;299.19;…;299.19}

⑤-LOOKUP(9^9,④)

LOOKUP查询有三个特性:

1.默认查询区域是升序的,即越往后值越大。

2.返回值应小于且最接近于查询值。

3.忽略查询区域中的错误值。

由此,我们赋予查询值一个极大数9^9,因为LOOKUP的特性1,所以查询区域的最后一个非错误值为最大值,即该值为返回值。LOOKUP的这几个特性,完美地做到了忽略错误值取最后一个有效值!

五、提取字符的万能公式

用法:依次提取目标单元格的全部数值并合并。

万能公式:

{=SUM(MID(0&A2,LARGE(ISNUMBER(--MID(A2,ROW($1:$100),1))*ROW($1:$100),ROW($1:$100))+1,1)*10^ROW($1:$100)/10)}

公式简要拆解如下:

① ISNUMBER(--MID(A2,ROW($1:$100),1))*ROW($1:$100)

通过MID(A2,ROW($1:$100),1)逐一提取每一个字符,使用双负号运算,区分数字和其它字符,再使用ISNUMBER函数判断每一个字符是否为数字,返回一组逻辑值,最后*ROW($1:$100)使得数字返回其在A2混合文本中的位置,其他字符返回0。

② LARGE(①,ROW($1:$100))

通过LARGE函数,将①中的字符位置值集合从大到小重新排序。由于数字在文本中的位置总是大于0,且数字越靠后,位置值越靠前。而其他字符总是小于0的。这里的重点是将所有的0值置后,同时将所有数字位置值倒排。

③ MID(0&A2,②+1,1)

MID根据②的位置值+1从0&A2中逐一取数。由于非数字的位置值为0,所有非数字返回值均取首位0,其余数字不受影响。由于②的数字位置值是颠倒的,所以,此时提取出的数字前后也是颠倒的。

④ SUM(③*10^ROW($1:$100)/10))

前三步得到了A2单元格中的所有数字和一串代表非数字位置的0组成的有序数组,此时要完成最终的提取,还需要将数字正序排列、去除0值并将其合并。这些通通交由*10^ROW($1:$100)/10完成,它通过构建一个多位数来将各个数字顺序摆放,最终将代表文本的有效数位前的0值省略,其余数字按次序从个位开始向左排列。最终的多位数即数字提取结果。

其实,提取数字字符串的问题,19年以后版本有了一个很简单又不烧脑的解决方案––通过CONCAT直接连接就行了。

19版万能公式如下:

{=CONCAT(IFERROR(--MID($A2,ROW($1:$100),1),""))}

公式简要说明:

1.使用MID和ROW组合,将每一个字符逐一提取出来。

2.通过双负号区分数字和非数字,非数字将报错。

3.IFERROR将非数字错误值转化为空。

4.使用CONCAT函数将所有数字合并。

以上,分享结束。学习更多技巧,请收藏关注

部落窝教育​www.itblw.com


****部落窝教育-excel数字提取万能公式****

原创:小花/部落窝教育(未经同意,请勿转载)

更多教程:

部落窝教育​www.itblw.com

微信公众号:exceljiaocheng

excel 公式 单引号 concat_excel数据提取技巧:从混合文本中提取数字的万能公式...相关推荐

  1. Excel如何在混合文本中提取数字

    工作中难免要从一大堆数据中提取数字,下面就给大家介绍一下怎么从混合文本中提取数字. 1.插件法(简单,高效) 1.如下图,混合文本中包含数字.英文.中文,数字有在右边有在左边还有在中间.下面就给大家介 ...

  2. 【Excel提取数字】用5个简单公式从混合文本中提取数字

    大家好,前面的文章中小编分享了使用快捷键[Ctrl+E]技巧完成混合文本提取数字,适合初学者和函数不熟悉的同学. 对于熟悉函数的小伙伴们,还是偏向于公式来提取数字,毕竟有些混合文本用函数公式提取比技巧 ...

  3. excel 公式 单引号 concat_Excel四舍五入到小数点后两位,不显示0,或如何使0成为短划线...

    在Excel中有三种舍入到指定小数位数的方法.一是使用数字格式,二是设置格式单元格,三是使用圆函数等函数.这三种方法都是自动四舍五入的.前两种方法还保留整数的指定小数位数,即保留小数点后的所有零:后一 ...

  4. excel 公式 单引号 concat_Excel两个新函数帮你快速搞定批量连接

    如果将两个文本连接起来,通常第一反应用连接符号"&". 使用连接符&连接文本字符 记得曾经有记者采访刘强东问奶茶妹妹漂不漂亮,他竟然回答看不出来好赖-当时真觉得这家 ...

  5. Excel如何从混合文本中提取学号、姓名及成绩

    如下图某位老师将学生学号姓名及成绩同时录入到同一单元格中,现在我们想要将这些信息分别提取出来录入到不同单元格中. 仔细观察混合文本我们发现学号为混合文本左侧前五位,因此我们在C2单元格输入公式=LEF ...

  6. Excel如何批量从中英文混合文本中提取出汉字

    如下图,B列单元格为中英文混合文本,现在想要批量从B列单元格中提取出汉字. ​ 选中B2:B11单元格区域 点击下图选项(Excel工具箱,百度即可了解详细的下载安装方法,本文这里就不做具体介绍.) ...

  7. Excel如何批量给混合文本中的数字标记不同颜色

    今天跟大家分享一下Excel如何批量给表格中的数字标记不同颜色 1.打开Excel文件 2.选择要标记数字颜色的单元格 3.点击下图选项(Excel工具箱,百度即可了解详细下载安装信息,本文这里就不做 ...

  8. Excel从手机号和座机号混合文本中提取手机号码

    如下图为某公司通讯录,B列部分单元格同时含有手机号码和座机号码.现在想要将B列单元格中的手机号码提取出来. 选中B列数据单元格 点击下图选项(Excel工具箱,百度即可了解详细的下载安装信息,本文这里 ...

  9. 计算机中公式提取用什么函数,技巧:Excel快速从文本中提取单元格中的数字函数公式...

    有时,我们将一些文本导入Excel.这些文本包含中文,字母,数字,并且全部堆积在一个单元格中.但是,我们只需要数字.那么,如何快速从中文,字母和数字中提取数字呢?在这里,王小老师将为您分享一些实用的函 ...

最新文章

  1. 【转】Android设计中的.9.png
  2. eclipse + android 自动补全
  3. Excel 计算时间差
  4. php html class,如何使用HTML span标签的class属性?这里有关于class属性的详解
  5. 端口和进程的关系(详解)
  6. Python编程从入门到实践~操作列表~创建数值列表
  7. java servlet 3_java – Servlet 2.5和3之间有什么区别?
  8. html5 乱码解决方案
  9. php7 switch,Switch autocommit on or off - PHP 7 中文文档
  10. 7款纯CSS3实现的炫酷动画应用
  11. steamcommunity 302占用端口
  12. 学习继电器的工作原理及作用
  13. android root写入文件,android中root用户无法往某些目录写入文件解决方法
  14. 中文CTEX加下划线无法换行问题
  15. java按钮添加图片_java 如何插入含有图片的按钮
  16. java ftp 被动模式_ftp 主动模式与被动模式
  17. 谷歌Chrome浏览器中如何打开或关闭网页的自动翻译功能?
  18. mysql过滤乱码_FaceBook专家:10分钟彻底解决MySQL乱码问题?
  19. 什么是色选机(color sorter)?
  20. 传软银同意以234亿英镑收购英国芯片设计厂商ARM

热门文章

  1. docker轻量级编排创建工具Humpback
  2. 2021年中国物流产业规模及重点企业对比分析[图]
  3. 申宝公司-继续关注低价股
  4. OpenCV:油画特效
  5. C/C++定义二维数组(矩阵)
  6. (2020最新版)idea最好用得插件集合推荐---美化篇
  7. 16 `bs对象.节点名div.属性contents` children descendants 获取子节点 子孙节点
  8. 各品牌机进BIOS/启动设备选择/U盘启动按键
  9. MBD——Bus使用全解
  10. c语言判断元旦是星期几,计算任何一天是星期几的C语言源代码.