如果要提取下面一段话
99.9千克的狗熊最可爱
首部的数字,要怎样操作呢?
分列嘛
但是分列在大量数据格式不对称的情况下就失灵了
用公式嘛
公式的效果不错
解释
- ROW($1:$4)
这个公式会生成一个常量数组 {1;2;3;4},注意看编辑栏
目的是为了方便LEFT在D2单元格中取值,为什么会是$1:$4呢?
2. -LEFT(D2,ROW($1:$4))
LEFT配合上ROW生成的常量数组,会分别取左边的前一个、前两个、前三个、前四个字符
加负号的目的,是对其进行减负运算,数值、文本型数值就直接变成0或负值,其他的不能转的就会变成错误值,最后即 {-9;-99;-99;-99.9}
这就是ROW的作用,当然这里用ROW($1:$3)也可以,而为什么是四个,因为要提取的这些内容中包含数字最多是四位 即6400
3. LOOKUP(1,-LEFT(D2,ROW($1:$4)))
即
LOOKUP(1,{-9;-99;-99;-99.9})
LOOKUP有这些特点:
- LOOKUP函数会忽略错误值
- 如果LOOKUP找不到要找的值,最终匹配小于或等于它的最大值(在以升序排列情况下)
没有排序的话,LOOKUP则总会会认为后边的数字比前边的大,所以最终会认为最后的值是最大的,所以最后会匹配到最完整的带负号的数值
最后再将匹配到的数值做减负运算,就是我们想要的值咯
腻学会了吗