快好知 kuaihz订阅观点

 

为什么你经常加班?看完这6个Excel字符提取...

字符提取大部分情况下都是将不同属性的东西放在一个单元格,违背了表格设计的初衷:一个单元格一种属性。说白了就是数字放一个单元格,文本放一个单元格,分开放。

也正是因为有了一大批这样的人,才导致了很多函数公式高手。根据垃圾表格,想出神一样的解决方案。凡事都有两面性,有利必有弊,我们就往好的方面想,通过了解这些熟练掌握函数的嵌套,同时锻炼思路。

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)

本站资源来自互联网,仅供学习,如有侵权,请通知删除,敬请谅解!
搜索建议:提取  提取词条  加班  加班词条  字符  字符词条  经常  经常词条  为什么  为什么词条  
办公

 自从学会这四个Excel技巧,什...

平时Excel对我们来说最大的用途,就是用于数据统计,不过很多人也正是在使用Excel进行数据统计的过程中,碰到了各种各样的问题。今天小编就给大家带来4个数据统...(展开)