堪称进阶excel的集大成旗舰系列课《48天,excel技能脱胎换骨》,试学之后才知道有多厉害……,点击下面卡片了解详情:
有这样一个excel经典问题,如下图开户行和银行账户写在同一个单元格中,需要将银行账号分离出来。
解决这个问题并不难,我相信大多数同学都能想到不止一种方法,比如:
①快速填充法
②分列法
③right函数法
这个问题虽然简单,但是它引出了excel中一大类问题:如何在excel中分离任何位置的字符串?比如,就上图所示的问题,上面给出的三种方法真的都可以么,我们来分析分析:
▌快速填充
这个方法可以很好的解决数据不规整的的提取问题,但是这个方法只能使用一次,如果数据变化,需要重新进行填充。
▌分列
看以上数据特点:
①无固定长度,因此不能以【固定字符】进行拆分;
②并不是所有文字与数字之间都存在【空格】,因此无法以【分隔符号】进行拆分;
所以分列法并不可行
▌right函数
=substitute((right(b3,len(b3)*2-lenb(b3))), ,)
所以,你看,对于excel提取账号这个问题,看似简单,但是由于数据情况的不同,并不是所有的方法都适用,这其实是一个套路很深的excel经典问题,通过这个问题,可以扩展出来很多知识点。
1、账号提取的三个思路三个思路:快速填充、分列、函数法
分列和快速填充我们在过去的文章中讲过很多,比较容易理解,这里重点讲解函数法:
=substitute((right(b3,len(b3)*2-lenb(b3))), ,)
2、right函数提取字符首先对主函数right的分析,如下图所示:
right函数需要确定第二个参数,即从字符串右端需要返回的字符的个数,这个应该怎么确定呢?
1.对于中文来说,lenb按 2个字节计数,而len按 1 个字节计数;
2.对于数字、空格来说,不管是len还是lenb都是按 1 个字节计数;
3.数字(含空格)的个数
=(中文个数+数字个数)*2-(中文个数*2+数字个数)=len(b3)*2-lenb(b3)
3、mid函数提取字符mid函数是用来截取处于中间位置的字符的,他有一个兄弟函数midb,它也属于mid函数大类,这两者有什么区别呢?mid,不分英文、中文的。一个英文字母和一个汉字都是一个数。而midb,就有区分,一个英文字母为一个字符,一个汉字为两个字符。
正是利用midb函数对中英文字符的判定的特性,可以用它来提取复杂的字符串。
=trim(midb(b3,searchb(,b3),lenb(b3)))
4、lookup函数提取字符关于lookup函数的详细用法,我写过一个教科书级的图文教程,通过6张图片就能完全掌握lookup最基础、最地道、最核心的用法,可以看这篇教程来学习。
excel中的万能查找函数lookup,全在这六张卡片中!
而使用lookup函数提取本案例中的字符,写出的公式是这样的:
=lookup(a,trim(right(b3,row($1:$30))))
当然,使用lookup还可以写出其他的公式形式,也能完成本案例的字符提取:
=lookup(a,trim(right(b3,row($1:$30))))
你看,通过一个小小的提取字符案例,我们学习了excel的快速填充、分列和11个excel常用函数,他们分别是right、len、lenb、mid、midb、substitute、lookup、trim、row,search、find,可以说,掌握这些常用的文本提取函数,任何形式的字符提取你都手到擒来。