举个工作中的例子,左边是一列混合数据,我们希望快速提取出手机号信息,左边的数据是模拟的,如下所示: 今天分享2种方法,快速进行提取 一、公式法我们先直接先结果,我们在单元格中输入的公式是: =MAX(IFERROR(--MID(A2,ROW($A$1:$A$99),11),0)) 因为是数组公式,如果是低版本的excel,没有溢出功能,则需要按数组三键CTRL+SHIFT+ENTER得到结果 我们解释一下原理,首先我们使用的公式是 =MID(A2,ROW(A1:A99),11) 它会对A2单元格,从第1位开始提取11位长度的数据 第2位开始的11位长度,第3位开始的11位长度,分别提取 然后我们使用负负得正的方式,去替换掉非数字的信息 --MID(A2,ROW(A1:A99),11) 然后用IFERROR公式去屏幕错误值,最后使用MAX函数公式获取这结果里面的最大值,也就是11位数字了 =MAX(IFERROR(--MID(A2,ROW(A1:A99),11),0)) 方法二:使用VBA代码法上述的方面只能解决杂乱的单元格文本中只存在一个手机号码的情况,如果说存在2个手机号,那么这个公式只能提取数字大的那个 如果希望全部提取出来,则我们可以使用开发工具,打开Visual Basic,然后插入一个模块,自定义一个sz的函数公式 然后我们在单元中输入的公式是: =sz(A2) 因为有了VBA代码,所以Excel文件也要另存为xlsm格式的文件(要不然下次打开的时候代码会丢失而无法使用自定义的sz公式) 关于这个小技巧,你学会了么?动手试试吧! |
|