今天我们给大家总结一下,Excel中提取数值的各种套路和方法!
我们先从简单常用的开始吧!
=--MIDB(A2,SEARCHB("?",A2),LEN(A2)*2-LENB(A2))
Excel文本类函数,基本都有两种模式一种是字符(末尾无B),一种按字节(末尾有B),中文汉字一般是双字节,数字字母单字节,所以本案例中,2*LEN-LENB正好是数值的长度!=-LOOKUP(1,-LEFT(A2,ROW($1:$99)))
LEFT第二参数使用数组ROW(1:99),比如依次从截取1位到99位,然后我们使用 符号转成数值,文本会变成错误值!LOOKUP,要求第二参数是升序排序,所以会返回最后一个小于等于1的数值!=VLOOKUP("-*",RIGHT(A2,ROW($1:$10)+{1,0}),2,0)
大部分同学应该没有见过VLOOKUP这种用法吧,其实核心在重构第二参数!ROW($1:$10)+{1,0},是一个数组,相当于我们每次都截取1-10的同时,再多截取一位,看一下下面的图就明白其中的奥义了!
=IFNA(-LOOKUP(,-MID($A2,SMALL(MODE.MULT(ROW($1:99)-1+ISERR(-(MID($A2,ROW($1:99)-1,1)&0))),COLUMN(A1)),ROW($1:9))),"")
这里的核心思路在于文本和数值交界点的判断,也就是每个数组的开始位置这个交界点有一个特点就是,前面的肯定不是数值,后面的肯定是数值MODE.MULT 是找出一组数组出现频次高的数据!也是常用的套路!
▼公式有点复杂,尽量理解吧=SUM(IFERROR(MID(TEXT(MID(SUBSTITUTE(A2,"元",0&10^-9),ROW($1:$99),14),),2,14)%,))
1、第一个是把特定的字符替换成一个比较长的小数追加在原本的数值上,比如这里的10^-9 = 0.000000001!2、Text格式化,参数为空,会把纯数值格式化为空,剩下的文本保留下来,然后我们从第二位截取,因为0& 加上0.000001中多了两个0,所以需要把提取出来的数据缩小100倍,直接%即可!但是不适合小数情况,所以第2个结果错误OK!今天的就先到这里,有时间我们通过视频再详解分析其中的套路!如果您看到了这里,因为是一位和小编一样爱学习和分享的老铁,记得