字符提取大部分情况下都是将不同属性的东西放在一个单元格,违背了表格设计的初衷:一个单元格一种属性。说白了就是数字放一个单元格,文本放一个单元格,分开放。
也正是因为有了一大批这样的人,才导致了很多函数公式高手。根据垃圾表格,想出神一样的解决方案。凡事都有两面性,有利必有弊,我们就往好的方面想,通过了解这些熟练掌握函数的嵌套,同时锻炼思路。
1.只有一个单位
这种就是最常见的,金额里含有单位。现在如何去除单位,只得到金额。
单位都是统一为元,这个很好处理,直接将单位替换掉就行。
=SUBSTITUTE(B2,"元",)
2.混合单位
但有些时候会出现混合单位,KG跟斤混用。
这时LENB函数就派上用处,这个跟LEN函数很像,但略有差异。
LENB是统计字节数,汉字2字节,字母跟数字1字节。也就是说斤跟KG其实都是2个字节数,所以提取左边总字节数-2即可。
=LEFT(B2,LENB(B2)-2)
3.分离姓名跟电话
接下来看如何分离姓名跟电话号码。
虽然姓名跟电话字符数都不确定,但还是有规律可循,就是可以利用字节跟字符数两者的特点来获取长度。
汉字=总字节数-总字符数
=LEFT(A2,LENB(A2)-LEN(A2))
数字=总字符数-汉字=总字符数-(总字节数-总字符数)=2*总字符数-总字节数
=RIGHT(A2,2*LEN(A2)-LENB(A2))
4.在地址中提取数字
坑爹的开始出现了,在地址中提取数字。
数字不在前后,在中间,愁死一堆人。怎么判断数字的其实位置呢?
同样只能依靠字符跟字节这个特点来处理,FIND函数不支持通配符,要不用这个来查找很不错。这时SEARCHB派上用场,作用跟FIND函数差不多,但支持通配符。单字节可以用通配符问号(?),通过查找问题的字节数从而知道数字的其实位置。
=SEARCHB("?",A2)
因为现在是使用字节数,MID函数就排不上用场,不过他的兄弟MIDB函数正好可以解决这个问题。
=MIDB(A2,SEARCHB("?",A2),2*LEN(A2)-LENB(A2))
函数与公式粗看很难学,因为内置就有500个函数,但是其实函数又很容易学,就如很多函数的用法都差不多。MID(MIDB)、LEN(LENB)、FIND(SEARCH、SEARCHB)等等,学一个函数就等于学会2个以上。
5.获取最后一个电话
坑爹之2,获取最后一个电话号码。
现在全部是单字节,不能借助字节数跟字符数的特点来提取。这时就是见证奇迹的时刻!
=-LOOKUP(1,-RIGHT(A2,ROW($1:$15)))
ROW函数现在我们已经很熟悉了,就是获取行号,ROW($1:$15)获取1到15。那现在看看RIGHT的语法:
=RIGHT(文本,提取右边N位)
=RIGHT(A2,1)得到9
=RIGHT(A2,2)得到09
=RIGHT(A2,3)得到709
=RIGHT(A2,4)得到6709
……
=RIGHT(A2,11)得到13735556709
……
=RIGHT(A2,15)得到EL3:13735556709
=RIGHT(A2,ROW($1:$15))
也就是获取右边1到15位
={"9";"09";"709";"6709";"56709";"556709";"5556709";"35556709";"735556709";"3735556709";"13735556709";":13735556709";"3:13735556709";"L3:13735556709";"EL3:13735556709"}
=-RIGHT(A2,ROW($1:$15))
就是将数字变成负数,文本变成错误值
={-9;-9;-709;-6709;-56709;-556709;-5556709;-35556709;-735556709;-3735556709;-13735556709;#VALUE!;#VALUE!;#VALUE!;#VALUE!}
根据以大欺小法的原则=LOOKUP(1,-RIGHT(A2,ROW($1:$15)))会提取到最后一个数字-13735556709。
既然将数字变成负数,就得想办法将她复原,再加一个负号就可以,负负得正。
=-LOOKUP(1,-RIGHT(A2,ROW($1:$15)))
为什么要提取1到15位而不是提取1到更多呢?
Excel允许的最大数字刚好是15位,提取再多也没有意义,只要保证能提取到全部数字就行。
6.获取所有金额的合计
坑爹之3,各种金额混合在一个单元格,要将这些金额全部求和。
Step 01 点公式→定义名称,名称输入合计,引用位置粘贴下面的公式,确定。
=EVALUATE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(金额合计!$A2,"发货运费:","+"),"退货运费:","+"),"大货费:","+"))
用SUBSTITUTE函数将3种金额的汉字替换成+,再嵌套EVALUATE函数就是计算表达式。
Step 02 在B2单元格输入公式,下拉。
=合计
Step 03 另存为启用宏的工作簿。
如果你水平不够牛逼,每个案例都要花费大量的时间和精力,你与Excel不加班,差了一份标准的表格。
源文件:
https://pan.baidu.com/s/1KtCIS47chX9kCL7r9Jmlbw
推荐:字符提取不伤脑,快速填充一次全搞定!
上篇:总有人问我,不会英语怎么才能学好Excel函数,现在统一回复
作者:卢子,清华畅销书作者,《Excel效率手册 早做完,不加班》系列丛书创始人,个人公众号:Excel不加班(ID:Excelbujiaban)