XLOOKUP函数是Office 365的内部程序专用的。 LOOKUP函数具有许多功能,可以克服VLOOKUP和HLOOKUP函数的许多弱点,但遗憾的是,目前我们不可用。但是不用担心,我们可以创建一个XLOOKUP函数,其功能与即将推出的XLOOKUP函数MS Excel完全相同。我们将一一添加功能。

XLOOKUP函数的VBA代码下面的UDF查找函数将解决许多问题。复制它或下载下面的文件下面的xl加载项。

Function XLOOKUP(lk As Variant, lCol As Range, rCol As Range)

XLOOKUP = WorksheetFunction.Index(rCol, WorksheetFunction.Match(lk, lCol, 0))

End Function

说明:

上面的代码只是VBA中使用的基本INDEX-MATCH。这简化了新用户面临的许多事情。 If解决了INDEX-MATCH函数的复杂性,仅使用三个参数。您可以将其复制到excel文件中,或下载下面的.xlam文件并将其作为附加Excel安装。如果您不知道如何创建和使用外接程序,请链接:/ excel-macros-and-vba-add-in-vb [单击此处,它将为您提供帮助]。

让我们看看它如何在excel工作表上工作。

image 48XLOOKUP Add-In]

XLOOKUP的语法

lookup_value:这是您要在

=XLOOKUP(lookup_value, lookup_array, result_array)

中搜索的值。 === lookup_array。

lookup_array:这是一维范围,您要在其中搜索lookup_value。 result_array:也是一维范围。这是您要从中检索值的范围。

让我们看看这个XLOOKUP函数的作用。

XLOOKUP示例:

在这里,我在excel中有一个数据表。让我们使用此数据表探索一些功能。

image

功能1.ExactLookup位于查找值的左侧和右侧。众所周知,Excel VLOOKUP函数无法从查找值的左侧检索值。为此,您必须使用复杂的INDEX-MATCH组合。但现在不再。

假设我们需要检索一些卷号表中的所有可用信息。在这种情况下,您也必须检索位于卷编号列左侧的区域。

image

写下这个公式,I2:

我们得到滚动编号112的结果North。将公式复制或向下拖动到下面的单元格中,以将它们填充到各自的区域中。

=XLOOKUP(H2,$B$2:$B$14,$A$2:$A$14)

如何运作?

机制很简单。此函数在lookup_array中查找lookup_value并返回第一个完全匹配的索引。然后使用该索引从result_array检索值。此功能与命名范围完美配合。

同样,使用此公式从每一列中检索值。

功能2. ExactHorizo​​ntalLookup位于查找值的上方和下方。 XLOOKUP也可以用作确切的HLOOKUP函数。 HLOOKUP函数具有与VLOOKUP相同的限制。它无法从查找值上方获取值。但是XLOOKUP不仅可以用作HLOOKUP,而且还可以克服该缺陷。让我们看看如何。

image

假设,如果要比较两个记录。您已经拥有的查找记录。您要与之比较的记录在lookup_range上方。在这种情况下,请使用此公式。

向下拖动公式,您将获得比较行的完整记录。

=XLOOKUP(H7,$A$9:$E$9,$A$2:$E$2)

image

功能3.不需要列号和默认的完全匹配。

使用VLOOKUP函数时,必须告诉要从中获取值的列号。为此,您必须计算列数或使用一些技巧,并利用其他功能。使用此UDF XLOOKUP,您无需这样做。

如果您使用VLOOKUP只是从一列中获取某些值或检查该列中是否存在值,那么按照我的观点,这是最好的解决方案。

功能4.替换INDEX-MATCH,VLOOKUP,HLOOKUP函数

对于简单的任务,我们的XLOOKUP函数取代了上述函数。

XLOOKUP的局限性:

对于复杂的公式,例如//lookup-formulas/vlookup-with-dynamic-col-index.html [带有动态Col索引的VLOOKUP],我们在VLOOKUP中标识带有标题的查找列,则此XLOOKUP将失败。

另一个限制是,如果必须从表中查找多个随机列或行,则此函数将无用,因为您必须一次又一次地编写此公式。这可以通过使用`link:/ excel-range-name-all-about-excel-named-ranges-excel-range-name [named range]`来克服。

目前,我们尚未添加近似功能,因此,您当然无法获得近似匹配。我们会过早添加它。

如果XLOOKUP函数找不到查找值,它将返回#VALUE错误,而不是#N /A。

好的,这就是您使用XLOOKUP检索,搜索和验证excel表中的值的方式。您可以使用此用户定义的函数在查找值的左侧或上方进行无忧查找。如果您对此功能或与EXCEL 2010/2013/2016/2019/365或VBA相关的查询仍有疑问或任何特定要求,请在下面的评论部分中进行询问。您一定会得到答复。

相关文章:

链接:/ custom-functions-in-vba-create-vba-function-to-return-array [创建VBA函数以返回数组]要从用户定义的函数返回数组,我们必须在命名UDF时对其进行声明。

`link:/ excel-array-formulas-arrays-in-excel-formula [Excel Formul中的数组] ||了解excel中的数组。

如何通过VBA创建用户定义的函数 ||了解如何在Excellink:/ custom-functions-userdefined-functions-from-other-workbooks-using-vba-in-microsoft-excel中创建用户定义的函数[使用另一个工作簿中的用户定义函数(UDF)使用Microsoft Excel中的VBA]在另一个Excel工作簿中使用用户定义的函数link:/ custom-functions-return-error-values-from-user-defined-functions-using-vba-in-microsoft-excel [返回用户定义的错误值在Microsoft Excel中使用VBA实现功能]] ||了解如何从用户定义的函数

返回错误值。 ===热门文章:

`link:/ general-topics-in-vba-split-excel-sheet-into-multiple-files-based on-column-using-vba [使用VBA基于列将Excel工作表拆分为多个文件]“ |此VBA代码根据指定列中的唯一值拆分excel工作表。

下载工作文件。

链接:/ general-topics-in-vba-off-warning-messages-using-vba-in-microsoft-excel [在Microsoft Excel 2016中使用VBA关闭警告消息] ||要关闭中断正在运行的VBA代码的警告消息,我们使用Application类。

在Microsoft Excel 2016中使用VBA添加和保存新工作簿] |要使用VBA添加和保存工作簿,我们使用Workbooks类。 Workbooks.Add可以轻松添加新工作簿,但是…​