同事常要出通报,从别的同事那得到的报表数据各种样式,有的数字会带有单位,如何简单地把带单位的数字提取出来。
首先如图1这样结构的数据,用CTRL+E的智能提取方式识别有问题,带小数点就识别不正确了。那么就只好借用函数了。这种数字+单位的数据结构,通常都是用LEFT,提取字符的函数。LEFT(单元格,提几位),提取单元格从左到右多少位的字符。如图2,提取了3位字符。注意:Left函数得到的数字是文本型的,不能直接参与计算;加上Value函数就可以转化为数值型的了。
但是哪有这么齐整的,都是一样位数的数据呢?我们需要根据不同的位数提取不同的值,这时就要加入Find函数了。如图3,Find("元",单元格),得到的是“元”这个字出现在单元格数据的第几位,那么用“这个位数”减1,前面的就都是数字了。公式Value(Left(单元格,Find("元",单元格)-1)) 就可很好地提取出带单位的数据中的数字。如图4
这公式有点小问题:就是带的单位不是“元”,就要将公式的“元”改为“万”。公式的通用性不好,如何更通用些? 加入ENCODEURL函数,官方解释转换字符编码。作用:将汉字转成“%”+不认识。这样就找到汉字的共同点了。再看示例,图5。然后用Find(“%”,Encodeurl(单元格)),图6,可以看出得到的数字,就是单元格中数字的位数,再用LEFT取出来。图7,不用管后面接的是什么单位。
其实只要是这种,数字在前,汉字在后的数据结构,都可以用这公式提出数字。公式只有两处填写单元格地址的,都随着公式的拖动变化,不需要另外更改别的,通用性极好。
