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结束子
这组代码将在眨眼之间得到结果。