VBA比赛|如何在VBA Excel中使用匹配功能? (例子)

与在工作表中具有索引和匹配作为查找功能相同,我们也可以在VBA中将匹配功能用作查找功能,此功能是工作表功能,可由应用程序访问。 worksheet方法,并且由于它是一个工作表函数,因此Match函数的参数类似于该工作表函数。

VBA匹配功能

VBA Match函数在表数组中(即在主excel表中)查找查找值的位置或行号。

在工作表中,查找功能是excel不可或缺的一部分。一些重要的查找功能是VLOOKUP,HLOOKUP,INDEX和MATCH。不幸的是,我们没有这些功能作为VBA功能。但是,我们可以将它们用作VBA中的工作表函数。

在本文中,我将向您展示如何在VBA中使用工作表查找功能MATCH之一作为工作表功能。

如何在VBA Excel中使用MATCH函数?

我们将向您展示在VBA中使用Excel MATCH函数的简单示例。

您可以在此处下载此VBA Match Excel模板– VBA Match Excel模板

范例#1

在VBA中,我们可以在Excel中将此MATCH公式用作工作表函数。请按照以下步骤在VBA中使用MATCH函数。

步骤1: 通过提供宏名称来创建子过程。

代码:

 子Match_Example1()

第2步: 在E2单元格中,我们需要结果,因此将代码启动为Range(“ E2”)。Value =

代码:

 Sub Match_Example1()Range(“ E2”)。Value =结束Sub 

第三步: 在E2中,单元格值应该是MATCH公式的结果。因此,为了访问VBA MATCH函数,我们需要首先使用属性“ WorksheetFunction”。在此属性中,我们将获得所有可用的工作表功能列表。

第4步: 在此处选择“匹配”功能。

代码:

 Sub Match_Example1()Range(“ E2”)。Value = WorksheetFunction.Match(End Sub 

步骤5: 现在问题开始了,因为我们没有确切的语法名称,而是像这样获得了“ Arg1,Arg2,Arg3”的语法。因此,您需要绝对确定此处的语法。

我们的第一个参数是LOOKUP VALUE,我们的LOOKUP VALUE在单元格D2中,因此选择单元格为 范围(“ D2”)。值.

代码:

 Sub Match_Example1()Range(“ E2”)。Value = WorksheetFunction.Match(Range(“ D2”)。Value,End Sub 

步骤6: 第二个参数是“表数组”,我们的表数组范围是从A2到A10。所以选择范围为 “范围(“ A2:A10”)”

代码:

 Sub Match_Example1()Range(“ E2”)。Value = WorksheetFunction.Match(Range(“ D2”)。Value,Range(“ A2:A10”),End Sub 

步骤7: 现在,最后一个参数是MATCH TYPE。我们需要完全匹配,因此将参数值输入为零。

代码:

 Sub Match_Example1()Range(“ E2”)。Value = WorksheetFunction.Match(Range(“ D2”)。Value,Range(“ A2:A10”),0)End Sub 

运行宏,我们将获得单元格D2中任何年份名称的位置。

例子2 –来自另一个工作表的VBA匹配

假设上面的同一组数据位于两个不同的工作表上。例如,表数组位于工作表名称“数据表”中,而“查找值”存在于工作表名称中的“结果表”中。

在这种情况下,我们需要先引用工作表的名称,然后再引用范围。以下是带有工作表名称的代码集。

代码:

 子Match_Example2()Sheets(“ Result Sheet”).Range(“ E2”)。Value = WorksheetFunction.Match(Sheets(“ Result Sheet”).Range(“ D2”)。Value,Sheets(“ Data Sheet”)。范围(“ A2:A10”),0)结束子 

Example#3 –带循环的VBA匹配功能

如果要在单个单元格中得到结果,那么没问题,但是如果结果必须在多个单元格中出现,那么我们需要使用VBA循环在所有单元格中获得结果。

假设您有这样的数据。

在这些情况下,编写冗长的代码是一项艰巨的任务,因此我们切换到循环。以下是将为我们完成工作的代码集。

代码:

 Sub Match_Example3()以k的整数k表示k = 2至10个单元格(k,5).Value = WorksheetFunction.Match(Cells(k,4).Value,Range(“ A2:A10”),0)下一个k结束子 

这组代码将在眨眼之间得到结果。