字符提取大部分情况下都是将不同属性的东西放在一个单元格,违背了表格设计的初衷:一个单元格一种属性。说白了就是数字放一个单元格,文本放一个单元格,分开放。 也正是因为有了一大批这样的人,才导致了很多函数公式高手。根据垃圾表格,想出神一样的解决方案。凡事都有两面性,有利必有弊,我们就往好的方面想,通过了解这些熟练掌握函数的嵌套,同时锻炼思路。 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)