网站首页 > 技术文章 正文
本文由两部分构成,其一提出问题并解决问题;其二解释相关函数公式。
1,
有这样一个问题,如下图所示,A列是数据列,混合文本中夹杂着手机号码;现在,需要在B列把A列数据中的手机号码提取出来。
您打算怎么操作呢?
当然是……快速填充了。
然而,快速填充这个玩意儿,时灵时不灵的。
小数据时用两下还可以,毕竟结果若是错了一眼就可以看出来。而大数据时,还是别用了,简直等同于自杀,而且怎么死的都不知道。
比如这个问题,快速填充的结果如下:
这问题如果使用函数公式解决,常用的套路有以下4个:
1、=MAX(IFERROR(--MID(A2,ROW($1:$50),11),0))
2、=MIN(IFERROR(--MID(A2&"a",ROW($1:$50),11),"T"))
3、=VLOOKUP(,MID(A2,ROW($1:$50),11)*{0,1},2,)
4、=-LOOKUP(,-MID(A2&"a",ROW($1:$50),11))
本例中,四个公式的计算结果相同,但由于它们的计算原理并不一样,在不同的例子上彼此之间还是有所区别的。
MAX函数是提取参数中的最大值,MIN函数是提取参数中的最小值。因此,当单元格存在多个手机号时,两者所提取的结果将不同。
VLOOKUP函数的查询机制是从前向后查,且查到即止,只提取首个查询结果。
LOOKUP(比查询范围内所有值都大的同类型的值,查询范围),该套路是提取最后一个符合条件的结果。
你瞧,两个函数的查询机制刚好是反过来的;没有优劣之分,只是各有所长。如果我们需要提取首个手机号,可以使用VLOOKUP;如果是提取最后一个手机号,可以使用LOOKUP。
2,
四个公式都用到了MID(A2,ROW($1:$50),11)语句。该语句的意思是,从A2单元格的第1~50位的位置分别提取11个字符。只所以提取11个字符是因为手机号为11位。
=MAX(IFERROR(--MID(A2,ROW($1:$50),11),0))
--MID()是将MID函数的计算结果转换为数值,当MID函数的计算结果为纯文本时,减负运算将返回错误值,因此使用IFERROR函数将错误值转换成0,最后使用MAX函数提取最大值。
=MIN(IFERROR(--MID(A2&"a",ROW($1:$50),11),"T"))
和MAX函数套路不同的是,MID的第一参数为A2&"a",这是防止数值存在单元格尾部时,造成公式计算错误。IFERROR将错误值屏蔽为文本”T”,是因为MIN函数计算时会忽略文本值,此处的”T”可以替换为其它文本字符,例如“星光”,”” “亲爱的”等等。
=VLOOKUP(,MID(A2,ROW($1:$50),11)*{0,1},2,)
VLOOKUP的第一参数是0,公式做了省略处理。
MID(A2,ROW($1:$50),11)*{0,1},通过MID函数的计算结果和常量数组{0,1}之间运算,产生了两列50行的二维数组,从中查询首个数值。
=-LOOKUP(,-MID(A2&"a",ROW($1:$50),11))
LOOKUP的查找值为0,公式做了省略处理。
-MID(A2&"a",ROW($1:$50),11),该部分的计算结果有两种,一种为错误值,一种是小于等于零的数值。LOOKUP找到最后的数值后,再进行一次减法运算,将计算结果转换为正数。
图文制作:看见星光
猜你喜欢
- 2025-07-10 Python 元组(Tuple)详解(python元组用来做什么)
- 2025-07-10 Excel如何去除前导0,中间和末尾的0不去除?送大家一条通用公式
- 2025-07-10 轻松搞定统计分析的Excel函数公式实用技巧解读
- 2025-07-10 一文学会Python编程中的一种数据结构——元组(tuple)
- 2025-07-10 Excel必看的20个函数公式!(excel函数公式大全百度文库)
- 2025-07-10 EXCEL函数 RANK函数 MAX函数 MIN函数 LARGE函数 SMALL函数
- 2025-07-10 8个常用多条件统计公式,看看哪个还不熟?
- 2025-07-10 秒懂结构体+函数封装!这个温度转换器项目干货拉满
- 2025-07-10 office计算机二级考试Excel常考内容(3)
- 2025-07-10 EXCEL小技巧 - 使用OFFSET函数创建动态范围引用
- 1509℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 539℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 497℃MySQL service启动脚本浅析(r12笔记第59天)
- 476℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 475℃启用MySQL查询缓存(mysql8.0查询缓存)
- 454℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 434℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 432℃MySQL server PID file could not be found!失败
- 最近发表
- 标签列表
-
- c++中::是什么意思 (83)
- 标签用于 (65)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- chromepost (65)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- js判断是否是json字符串 (67)
- checkout-b (67)
- c语言min函数头文件 (68)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)