VLOOKUP提取数值

原创作者 | 李锐

微信公众号 | Excel函数与公式(ID:ExcelLiRui)

个人微信号 | (ID:ExcelLiRui520)

VLOOKUP提取数值

工作中的一些有用数据会藏在字符串中,我们要使用它必须先从文本混杂的字符串中提取数值。

而对于这类机械枯燥的工作,如果需要操作的数据较多,是无法使用手动操作完成的。比如2000行文本和数值混杂的数据,需要逐个从中提取数值,这时应该怎么办呢?

今天要讲的就是VLOOKUP提取数值的技术,看完觉得好的,记得去底部点个好看再分享给朋友,我会根据大家的反馈调整发文内容及写法。

问题描述

下图左侧是原始数据源,包含文本和数值混杂在一起。

要求在右侧的B列黄色区域输入公式,从A列的字符串中提取数值。

比如A2单元格的“销售额1234.56元”要求从中提取中数值1234.56,应该怎么做呢?

为了让大家清晰案例效果,可以先看下面的效果演示,自己思考一下。

效果演示

下图是我做好公式以后的效果演示,便于你理解案例要求和捋顺思路。

右侧黄色公式区域,从左侧文本和数值混杂的字符串中,自动提取出数值。

下图是写好公式以后的演示效果

(下图为gif动图演示)

从上面的动图演示可见,无论在A列怎样更改数值,公式都可以很智能的把你想要的结果数值提取出来。

在看下面的解决方案之前,请你先独立思考,带着思路和问题继续向下看。

解决方案

思路提示:解决这个问题的关键点,是构建VLOOKUP函数的查找区域,即VLOOKUP函数的第二参数。

这里我们使用多函数组合来进行技术实现。

B2的数组公式如下,按ctrl+shift+enter输入:

=VLOOKUP(9E+307,MID(A2,MIN(IF(ISNUMBER(--MID(A2,ROW($1:$99),1)),ROW($1:$99))),ROW($1:$99))*1,1)

如下图所示。

(下图为公式示意图)

一句话解析:

先用MID配合ROW函数对字符串截取每一位字符,然后用ISNUMBER判断是否数值,对于是数值的返回在字符串中的位置,用MIN函数提取这些位置中最小的一个就得到了字符串中数值的起始位置,再次用MID函数从这个起始位置向后依次截取从1到99位字符,通过*1将其中的文本转为错误值,数字转为数值本身,最后借助VLOOKUP函数模糊查询提取目标结果。

使用多函数组合嵌套创造条件构建所需的内存数组,将内存数组产生的中间结果在不同函数参数之间传递,是晋升Excel函数中级水平的瓶颈之一。

这类关键的瓶颈技术极大制约着用户使用Excel能够发挥出来的威力,可谓差之毫厘失之千里,举例:在面临某些问题时,80分技术水平的用户能发挥80分威力的话,79分技术水平的用户的威力=0

(0)

相关推荐