快生活 - 生活常识大全

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


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