下 关于VLOOKUP,你必须知道的23件事

16.VLOOKUP+MATCH用于完全动态的列索引
将上面介绍的技巧更进一步,可以使用MATCH来查找表中列的位置,返回完全动态的列索引号 。
有时这被称作双向查找,因为正沿着行和列的方向查找 。
一个示例是查找销售人员在指定月份的销售量,或者查找从指定的供应商特定产品的价格 。例如,假设有销售人员每月的销售量:

下 关于VLOOKUP,你必须知道的23件事

文章插图
图15
VLOOKUP可以容易地查找销售人员,但是没有办法自动处理月名 。技巧是使用MATCH函数代替静态列索引号 。
下 关于VLOOKUP,你必须知道的23件事

文章插图
图16
注意,我们给出的匹配区域包括表中所有列,以便同步VLOOKUP中使用的列号 。
=VLOOKUP(H2,saledata,MATCH(H3,months,0),0)
17.VLOOKUP允许使用通配符进行部分匹配
任何时候在完全匹配模式下使用VLOOKUP时,都可以在查找值中使用通配符 。这看起来违反直觉,但是通配符让你根据部分匹配进行精确匹配 。
Excel提供了2个通配符:星号(*)匹配1个或多个字符,问号(?)匹配1个字符 。
例如,可以直接在单元格中输入星号,然后引用它作为VLOOKUP中的查找值 。在图17中,被命名为“val”的单元格H3中输入“Mon*”,将导致VLOOKUP匹配名字“Monet” 。
下 关于VLOOKUP,你必须知道的23件事

文章插图
图17
本例中的公式为:
=VLOOKUP(val,dataname,1,0)
如果你愿意,可以调整VLOOKUP公式使用内置的通配符,如下图18所示,简单地连接单元格H3中的值和通配符 。
下 关于VLOOKUP,你必须知道的23件事

文章插图
图18
本例中,在VLOOKUP函数里将查找值和星号连接:
=VLOOKUP(val &”*”,dataname,1,0)
注意,小心使用通配符和VLOOKUP 。虽然提供了一个容易的办法创建“偷懒的匹配”,但是也容易找到错误的匹配 。
18.可以捕获#N/A错误并显示友好的消息
在完全匹配模式,当没有找到匹配时VLOOKUP将显示#N/A错误 。一方面,这是有用的,因为明确告诉你在查找表中没有匹配 。然而,#N/A看起来不是很友好,因此有几种方法可以捕获这个错误并显示为其他内容 。
一旦开始使用VLOOKUP,肯定会遇到#N/A错误 。当VLOOKUP不能找到匹配项时,发生这种错误 。
这是有用的错误,因为VLOOKUP清楚地告诉你不能够找到查找值 。本例中,“Latte”在表中不存在,因此VLOOKUP抛出#N/A错误 。
下 关于VLOOKUP,你必须知道的23件事

文章插图
图19
本例中的公式是完全标准的完全匹配:
=VLOOKUP(E4,datab,2,0)
然而,#N/A看起来不是非常友好,因此你可能想要捕获这个错误并显示更友好的消息 。
最容易的方法是将VLOOKUP放在IFERROR函数里面 。IFERROR允许捕获任意错误并返回你选择的结果 。要捕获错误并显示“没有找到”消息来代替该错误,可以将原来的公式简单地放置在IFERROR里面并设置你想要的结果:
下 关于VLOOKUP,你必须知道的23件事

文章插图
图20
如果找到了查找值,那么没有错误发生并且VLOOKUP函数返回正常的结果 。下面是公式:
=IFERROR(VLOOKUP(E4,datab,2,0),”没有找到“)
19.数字作为文本可能导致匹配错误
有时,在VLOOKUP中使用的表可能包含以文本形式输入的数字 。如果只是将数字作为文本从表中检索,则无关紧要 。但是,如果表中的第1列包含以文本形式输入的数字,而查找值不是文本,则会出现#N/A错误 。

推荐阅读