定义Excel XLOOKUP功能
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工作表上工作。
XLOOKUP Add-In]
XLOOKUP的语法
lookup_value:这是您要在
=XLOOKUP(lookup_value, lookup_array, result_array) |
中搜索的值。 === lookup_array。
lookup_array:这是一维范围,您要在其中搜索lookup_value。 result_array:也是一维范围。这是您要从中检索值的范围。
让我们看看这个XLOOKUP函数的作用。
XLOOKUP示例:
在这里,我在excel中有一个数据表。让我们使用此数据表探索一些功能。
功能1.ExactLookup位于查找值的左侧和右侧。众所周知,Excel VLOOKUP函数无法从查找值的左侧检索值。为此,您必须使用复杂的INDEX-MATCH组合。但现在不再。
假设我们需要检索一些卷号表中的所有可用信息。在这种情况下,您也必须检索位于卷编号列左侧的区域。
写下这个公式,I2:
我们得到滚动编号112的结果North。将公式复制或向下拖动到下面的单元格中,以将它们填充到各自的区域中。
=XLOOKUP(H2,$B$2:$B$14,$A$2:$A$14) |
如何运作?
机制很简单。此函数在lookup_array中查找lookup_value并返回第一个完全匹配的索引。然后使用该索引从result_array检索值。此功能与命名范围完美配合。
同样,使用此公式从每一列中检索值。
功能2. ExactHorizontalLookup位于查找值的上方和下方。 XLOOKUP也可以用作确切的HLOOKUP函数。 HLOOKUP函数具有与VLOOKUP相同的限制。它无法从查找值上方获取值。但是XLOOKUP不仅可以用作HLOOKUP,而且还可以克服该缺陷。让我们看看如何。
假设,如果要比较两个记录。您已经拥有的查找记录。您要与之比较的记录在lookup_range上方。在这种情况下,请使用此公式。
向下拖动公式,您将获得比较行的完整记录。
=XLOOKUP(H7,$A$9:$E$9,$A$2:$E$2) |
功能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可以轻松添加新工作簿,但是…