手机版

关于VLOOKUP你必须知道的23件事(第二部分)

时间:2021-09-22 来源:互联网 编辑:宝哥软件园 浏览:

16.VLOOKUP MATCH用于完全动态的列索引。

进一步使用上述技术,您可以使用MATCH来查找该列在表中的位置,并返回完全动态的列索引号。

这有时被称为双向查找,因为它是在行和列的方向上查找。

一个例子是找到销售人员在指定月份的销售额,或者从指定的供应商那里找到特定产品的价格。例如,假设有一个销售人员的月销售量:

图15。

VLOOKUP可以轻松找到销售人员,但是没有办法自动处理月份名称。技巧是使用MATCH函数而不是静态列索引号。

图16

请注意,我们的匹配区域包括表中的所有列,以便同步VLOOKUP中使用的列号。

=VLOOKUP(H2,saledata,MATCH(H3,月,0),0)

17.VLOOKUP允许使用通配符进行部分匹配。

只要在完全匹配模式下使用VLOOKUP,就可以在搜索值中使用通配符。这可能看起来违反直觉,但是通配符允许您根据部分匹配进行精确匹配。

Excel提供了两个通配符:星号(*)匹配一个或多个字符,问号(?)匹配1个字符。

例如,您可以直接在单元格中输入星号,然后在VLOOKUP中将它作为查找值引用。在图17中,在名为“val”的单元格H3中输入“Mon*”将导致VLOOKUP与名称“Monet”匹配。

图17

本例中的公式为:

=VLOOKUP(val,dataname,1,0)

如果您愿意,可以调整VLOOKUP公式以使用内置通配符,如下图18所示,只需将单元格H3中的值与通配符连接起来。

图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错误。

图19。

本例中的公式是完美标准的完美匹配:

=VLOOKUP(E4,数据,2,0)

但是,#N/A似乎不太友好,因此您可能希望捕获此错误并显示更友好的消息。

最简单的方法是将VLOOKUP放在IFERROR函数中。IFERROR允许捕捉任意错误并返回您选择的结果。要捕捉错误并显示消息“未找到”而不是错误,您可以简单地将原始公式放入IFERROR并设置所需的结果:

图20。

如果找到查找值,则不会出现错误,VLOOKUP函数返回正常结果。以下是公式:

=IFERROR(VLOOKUP(E4,数据,2,0),“未找到”)

19.数字作为文本可能会导致匹配错误。

有时,VLOOKUP中使用的表格可能包含以文本形式输入的数字。如果只是从表中检索数字作为文本,这并不重要。但是,如果表中的第一列包含以文本形式输入的数字,并且搜索值不是文本,则会出现#N/A错误。

在以下示例中,planet表的id是以文本形式输入的数字,由于搜索值是数字3,VLOOKUP返回一个错误:

图21。

为了解决这个问题,有必要确保查找值和表中的第一列是相同的数据类型(两个数字或两个文本)。

一种方法是将查阅列中的值转换为数字。但是,如果不容易控制源表,也可以调整VLOOKUP公式,将搜索值转换为文本,如下图,在搜索值“”后连接:

=VLOOKUP(idn " ",行星,2,0)

图22。

如果您不确定何时会有数字,何时会有文本,您可以通过将VLOOKUP放入IFERROR来处理这两种情况:

=iforr(VLOOKUP(idn,行星,2,0),VLOOKUP(IDN " ",行星,2,0))

20.可以使用VLOOKUP替换嵌套的IF语句。

VLOOKUP最有趣的用途之一是替换嵌套的IF语句。如果你曾经构建过一系列嵌套的IF语句,你知道它们工作正常,但是它们需要很多括号,你必须注意嵌套顺序,避免引入逻辑错误。

例如,嵌套IF语句的一个常见用法是根据分数确定等级。在下面的示例中,您可以看到可以实现用嵌套的IF语句构建的公式。

图23。

完整的中频嵌套公式如下:

=IF(C564,“F”,IF(C573,“D”,IF(C585,“C”,IF(C595,“B”,“A”)))

公式工作正常,但需要注意的是,逻辑关系和实际得分是直接写入公式的。如果因为任何原因修改了分数,需要仔细更新公式,然后复制到整个表格中。

相比之下,VLOOKUP可以使用一个简单的公式来分配分数。需要做的是确保为VLOOKUP设置了评分表,即按分数排序,并包含括号来处理所有分数。

图24。

此时,使用的公式是:

=VLOOKUP(C5,等级,2,真)

这种方法的优点是逻辑和分数都内置在性能指标表中。如有变更,可直接修改更新表,VLOOKUP公式自动更新,无需编辑公式。

21.VLOOKUP只能处理一个条件。

根据设计,VLOOKUP只能根据单个条件查找值,这个条件在表的第一列(搜索列)作为搜索值被找到。

这意味着在“会计”中很难找到姓“史密斯”的员工,或者在单独的列中按照名字和姓氏找到员工。

然而,有办法克服这个限制。一种解决方案是创建辅助列,用于连接不同列的值以创建查找值,类似于多个条件。比如你想找员工的部门和组,但是名字和姓氏在不同的列,怎么能同时找到呢?

图25。

首先,添加一个辅助列,将名字和姓氏连接在一起:

图26。

然后,让VLOOKUP使用包含新列的表,并将名和姓连接为搜索值:

图27。

最后,的VLOOKUP公式使用辅助列作为搜索列来查找名字和姓氏链接在一起的值:

=VLOOKUP(C3D3,名称,4,0)

22.两个VLOOKUP比一个VLOOKUP快。

这可能看起来很疯狂,但是当你有很多数据,需要执行完美匹配时,你可以通过在公式中添加另一个VLOOKUP来加快VLOOKUP的速度!

背景:假设你有大量的订单数据,比如一万多条记录,你在用VLOOKUP根据订单ID来查找订单总数。因此,使用的公式如下:

=VLOOKUP(order_id,order_data,5,FALSE)

公式的最后一个FALSE强制VLOOKUP执行精确匹配。你需要一个完美的匹配,因为订单号可能找不到。在这种情况下,精确匹配设置将导致VLOOKUP返回#N/A错误。

问题是精确匹配非常慢,因为Excel必须以线性方式遍历所有值,直到找到匹配或不匹配。

相反,近似匹配相当快,因为Excel可以执行所谓的二分搜索法。

然而,二分搜索法(VLOOKUP处于近似匹配模式)的问题是,当没有找到值时,VLOOKUP可能会返回错误的结果。更糟糕的是,结果可能看起来完全正常,所以很难发现错误。

解决方法是在近似匹配模式下使用VLOOKUP两次。第一个示例只是检查该值是否真的存在。如果是这样,另一个VLOOKUP运行(同样,在近似匹配模式下)以获得所需的数据。如果没有,您可以返回任何您想要的值来指示没有找到结果。

最终公式如下:

=IF(VLOOKUP(order_id,order_data,1,TRUE)=order_id,VLOOKUP(order_id,order_data,5,FALSE),“缺失”)

请注意,使用这种技术时,必须对数据进行排序。这只是一种防止搜索值丢失的方法,同时保持快速搜索。

23.索引和MATCH的结合可以做VLOOKUP能做的任何事情,甚至更多。

关于INDEX和MATCH哪个组合比VLOOKUP更好,网上有很多争议。

Match可以完成VLOOKUP(和HLOOKUP)能做的一切,它更灵活但更复杂。因此,支持INDEX MATCH的人会说,最好先学习INDEX和MATCH,因为它最终会为你提供更好的工具集。

反对INDEX MATCH的理由是它需要两个函数,所以用户学习和掌握起来比较复杂。

如果你经常使用Excel,你需要学习如何使用INDEX和MATCH,这是一个非常强大的组合。

但是,我们也应该学习VLOOKUP,因为VLOOKUP的用法在很多工作表中经常出现。在直观的情况下,VLOOKUP可以毫不费力地实现其目标。

版权声明:关于VLOOKUP你必须知道的23件事(第二部分)是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。