VBA指数匹配|如何在VBA中使用索引匹配功能(示例)

VBA中的索引匹配

VBA组合中的INDEX和MATCH函数是excel中的VLOOKUP函数的替代方法。在VBA中,我们不能直接使用INDEX和MATCH函数,因为这两个函数不是VBA内置函数的一部分。但是,我们仍然可以将它们用作工作表函数类的一部分。

如何在VBA中使用索引匹配? (一步步)

您可以在此处下载此VBA索引匹配Excel模板– VBA索引匹配Excel模板

例如,查看下面的数据。

在上面的数据中,查找值是部门名称,并且需要基于该部门名称提取薪金金额。

但是这里的问题是结果列在第一列中,而查找值列在其后是结果列。在这种情况下,VLOOKUP无法获取薪水金额,因为VLOOKUP仅从右到左而不是从左到右工作。

在这些情况下,我们需要使用VBA INDEX和MATCH函数的组合公式。让我们执行在VBA代码中查找每个部门的工资额的任务。

步骤1: 开始日晒程序。

第2步: 声明VBA整数变量。

代码:

 Sub INDEX_MATCH_Example1()Dim k作为整数结尾Sub 

第三步: 现在在VBA中打开“下一个循环”。

代码:

 Sub INDEX_MATCH_Example1()Dim k作为整数,对于k = 2到5下一个k结束Sub 

第4步: 在VBA循环内执行公式。在第5列中,我们需要应用公式,因此代码为CELLS(k,5).Value =

代码:

 Sub INDEX_MATCH_Example1()Dim k作为整数对于k = 2至5个像元(k,5)。值=下一个k结束Sub 

步骤5: 在该单元格中,我们需要应用VBA INDEX和MATCH公式。正如我告诉我们的那样,我们需要在vba类中将这些函数用作工作表函数,因此请打开工作表函数类。

代码:

 Sub INDEX_MATCH_Example1()Dim k作为整数,对于k = 2至5个像元(k,5)。值= WorksheetFunction。下一个k结束子 

步骤6: 进入工作表函数类后,我们可以看到所有可用的工作表函数,因此选择INDEX函数。

代码:

 Sub INDEX_MATCH_Example1()Dim k作为整数,对于k = 2至5个像元(k,5)。值= WorksheetFunction.Index(下一个k结束子 

步骤7: 在VBA中使用工作表函数时,您需要绝对确定公式的参数。第一个参数是数组,即我们从哪一列需要结果,在这种情况下,我们需要从A2到A5的结果。

代码:

 Sub INDEX_MATCH_Example1()Dim k作为整数,对于k = 2至5个像元(k,5)。值= WorksheetFunction.Index(Range(“ A2:A5”),下一个k结束 

步骤8: 接下来是我们需要哪个行号的结果。如我们所见,前面的示例无法每次都手动提供行号。因此,请使用MATCH函数。

为了再次使用MATCH函数,我们需要打开Worksheet Function类。

代码:

 Sub INDEX_MATCH_Example1()Dim k作为整数,对于k = 2至5个像元(k,5)。值= WorksheetFunction.Index(Range(“ A2:A5”),WorksheetFunction.Match(下一个k结束Sub 

步骤9: MATCH函数的第一个参数是LOOKUP值,这里的查询值是部门名称,它在单元格(2,4)中。

由于每次行号都必须更改,因此我们可以提供变量“ k”来代替手动行号2。单元格(k,4).Value

代码:

 Sub INDEX_MATCH_Example1()Dim k作为整数,对于k = 2至5个单元格(k,5).Value = WorksheetFunction.Index(Range(“ A2:A5”),WorksheetFunction.Match(Cells(k,5).Value,Next k结束子 

步骤10: 接下来,我们需要提及部门值范围,即范围(“ B2:B5”)。

代码:

 Sub INDEX_MATCH_Example1()Dim k作为整数,对于k = 2至5个像元(k,5).Value = WorksheetFunction.Index(Range(“ A2:A5”),WorksheetFunction.Match(Cells(k,5).Value,Range (“ B2:B5”), 

下一个k

结束子

步骤11: 接下来,将参数设为0,因为我们需要完全匹配,然后将方括号括起来。

代码:

 Sub INDEX_MATCH_Example1()Dim k作为整数,对于k = 2至5个单元格(k,5).Value = WorksheetFunction.Index(Range(“ A2:A5”),WorksheetFunction.Match(Cells(k,4).Value,Range (“ B2:B5”),0)) 

下一个k

结束子

好的,我们完成了编码部分。让我们运行代码以使结果出现在第5列中。

因此,我们得到了结果。

我们可以使用此公式替代VLOOKUP函数。