John在A列中具有升序数值的查询表,在B列中具有相对应的文本值的查询表。当他使用VLOOKUP函数时,它将返回等于或小于指定查询值的数值的文本值。 John确实希望第一个值等于或大于查找值。

无法更改VLOOKUP的工作方式。它总是匹配等于或小于查找值的值。但是,一种选择是修改用于执行实际查找的公式。考虑以下公式,该公式假定要用于查找的值位于单元格D1中:

=IF(VLOOKUP(D1,$A$1:$A$10,1)=D1,VLOOKUP(D1,$A$1:$B$10,2), INDEX($B$1:$B$10,1+MATCH(D1,$A$1:$A$10)))

如果D1中的值与A列中的值完全匹配,则使用常规VLOOKUP公式。如果不是,则放弃VLOOKUP,而将INDEX函数与MATCH函数结合使用。

如果能够按降序对数据表进行排序,则可以使用较短的公式:

=INDEX($A$1:$B$10,MATCH(D1,$A$1:$A$10,-1),2)

MATCH函数使用D1值来查找大于或等于该值的最小值。 (这是-1参数指定的。)MATCH函数返回适当行的行号,然后INDEX使用它实际获取值。

解决该问题的另一种有趣的方法是使用查找值的倒数作为控制列,该列将用于实际从数据表中查找信息。例如,假设您的数据表位于A1:B10中,并且用于查找的实际数值在A列中。您需要在数据表的左侧插入一列。在此新列(现在为A列)的第一个单元格中,插入以下公式:

=1/B1

这提供了B1中值的倒数,您可以将其复制到A列的单元格中。您的数据表现在具有三列,即A1:C10。

接下来,根据此新列以升序对数据表进行排序。

现在,您可以对查找公式进行一些修改,以便查找所需的逆函数。假设要用于查找的值位于单元格E1中,则应使用以下公式:

=VLOOKUP(1/E1,$A$1:$C$10,3)

您实际上最终得到的是来自C列的期望值,该值与B列中的等于或小于E1中的值相关联。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(3090)适用于Microsoft Excel 97、2000、2002和2003。