Excel VBA中的VLOOKUP |如何在VBA中编写VLOOKUP代码?

Vlookup是excel中的工作表函数,但也可以在VBA中使用,Vlookup的功能类似于VBA和工作表中的功能,因为这是工作表函数,因此在VBA中使用Vlookup的方法是通过Application.WorksheetFunction方法和参数保持不变。

Excel VBA中的VLOOKUP函数

Excel中的VLOOKUP函数用于搜索数组中的值,并从另一列返回其对应的值。要搜索的值应出现在第一列中。还需要提及是寻找完全匹配还是近似匹配。工作表函数VLOOKUP可以在VBA编码中使用。该函数不是VBA内置的,因此只能使用工作表进行调用。

Excel中的VLOOKUP函数具有以下语法:

其中,lookup_value是要查找的值,table_arrray是表,col_index_num是返回值的列号,range_lookup表示匹配是精确的还是近似的。 range_lookup可以为TRUE / FALSE或0/1。

在VBA代码中,VLOOKUP函数可以用作:

Application.WorksheetFunction.vlookup(lookup_value,table_array,col_index_num,range_lookup)

如何在Excel VBA中使用VLookup?

以下是Excel VBA中的VLookup代码的一些示例。

您可以在此处下载Excel VBA模板中的VLookup – Excel VBA模板中的VLookup

Excel VBA示例1中的VLookup代码

让我们看看如何在Excel VBA中调用工作表函数VLOOKUP。

假设您有一个学生ID,姓名和他们获得的平均分数的数据。

现在,您要查找学生获得的ID为11004的分数。

要查找该值,请按照下列步骤操作:

  • 转到“开发人员”选项卡,然后单击“ Visual Basic”。

  • 在“ VBA”窗口下,转到“插入”,然后单击“模块”。

  • 现在,编写VBA VLOOKUP代码。可以使用以下VBA VLOOKUP代码。

子vlookup1()

昏暗的student_id只要

暗淡标记为长

student_id = 11004

设置myrange = Range(“ B4:D8”)

标记= Application.WorksheetFunction.VLookup(student_id,myrange,3,False)

结束子

首先,定义一个学生ID,这是查找的值。因此,我们定义

student_id = 11004

接下来,我们定义值和返回值存在的范围。由于我们的数据存在于单元格B4:D8中,因此我们将范围myrange定义为:

设置myrange = Range(“ B4:D8”)

最后,我们在变量中使用Worksheet函数输入VLOOKUP函数,标记为:

标记= Application.WorksheetFunction.VLookup(student_id,myrange,3,False)

为了在消息框中打印标记,让我们使用以下命令:

MsgBox“学生ID:”和“ student_id”和“获得”,“标记”和“标记”

它将返回:

ID:11004的学生获得85分。

现在,单击运行按钮。

您会注意到一个消息框将出现在Excel工作表中。

Excel VBA示例#2中的VLookup代码

假设您拥有雇员姓名及其工资的数据。此数据在B列和C列中提供。现在,您需要编写VBA VLOOKUP代码,以便在单元格F4中给定雇员的姓名,该雇员的薪水将在单元格G4中返回。

让我们编写VBA VLOOKUP代码。

  1. 定义存在值的范围,即B和C列。

设置myrange =范围(“ B:C”)

  1. 定义员工的姓名,并从单元格F4中输入姓名。

设置名称=范围(“ F4”)

  1. 将薪水定义为单元格G4。

设定工资=范围(“ G4”)

  1. 现在,使用VBA中的WorksheetFunction调用VLOOKUP函数,并将其输入salary.Value中。这将返回单元格G4中的值(Vlookup函数的输出)。可以使用以下语法:

薪金。价值= Application.WorksheetFunction.VLookup(name,myrange,2,False)

  1. 现在,运行模块。运行VBA VLOOKUP代码后,单元格G4将包含员工的薪水。

假设您在工作表中将单元格F4的值更改为“ David”并重新运行代码,它将返回David的薪水。

Excel VBA示例3中的VLookup代码

假设您拥有公司员工的数据,包括其ID,姓名,部门和薪水。在VBA中使用Vlookup,您希望使用其姓名和部门来获取员工的薪水详细信息。

由于excel中的vlookup函数仅在table_array的第一列(即table_array的第一列)中搜索lookup_value,因此需要首先创建一个包含每个员工的“姓名”和“部门”的列。

在VBA中,让我们在工作表的B列中插入值“名称”和“部门”。

为此,请转到“开发人员”选项卡,然后单击“ Visual Basic”。然后插入并单击“模块”以启动新模块。

现在让我们编写代码,使B列包含D列(名称)和E列的值。

语法为:

首先,从i = 4开始使用“ for”循环,因为在这种情况下,值从第4行开始。循环将一直持续到C列最后一行的末尾。因此,变量i可用作“ for”循环内的行号。

然后输入要分配给单元格的值(行编号,B列),可以将其指定为单元格(i,“ B”)。将值指定为单元格(行编号,D列)和“ _”和单元格(行编号,E列) )。

假设您要分配单元格B5 = D5&“ _”&E5,则可以简单地使用以下代码:

单元格(5,“ B”)。值=单元格(5,“ D”)。值&“ _”&单元格(5,“ E”)。值

现在,让我们在数组B5:E24中查找查找值,您需要首先输入查找值。让我们从用户那里获取值(名称和部门)。去做这个,

  1. 将三个变量(名称,部门和lookup_val)定义为字符串。
  2. 从用户那里输入名称。使用代码:

名称=输入框(“输入员工姓名”)

运行代码时,输​​入框中“输入..”中的内容将显示在提示框中。在提示中输入的字符串将分配给name变量。

  1. 从用户那里拿部门。可以与上述类似地完成。

部门= InputBox(“输入员工的部门”)

  1. 使用以下语法,将名称和部门以“ _”作为分隔符分配给变量lookup_val:

lookup_val =名称&“ _”&部门

  1. 编写vlookup语法以搜索范围B5:E24中的lookup_val,并以可变薪水返回它。

初始化可变工资:

薪水低至

使用Vlookup函数查找lookup_val。 table_array可以指定为Range(“ B:F”),并且工资在第5列中显示。因此可以使用以下语法:

薪水= Application.WorksheetFunction.VLookup(lookup_val,范围(“ B:F”),5,False)

  1. 要在消息框中打印薪水,请使用以下语法:

MsgBox(员工的薪水为“&薪水”)

现在,运行代码。在工作表中将出现一个提示框,您可以在其中输入名称。输入名称(说“ Sashi Sashi”)后,单击“确定”。

它将打开另一个框,您可以在其中输入部门。进入部门后,请说IT。

它将打印员工的薪水。

如果Vlookup可以找到具有名称和部门的任何员工,则会出现错误。假设您输入名称“ Vishnu”和部门“ IT”,它将返回运行时错误“ 1004”。

要解决此问题,您可以在代码中指定针对这种类型的错误,打印“找不到值”。去做这个,

  1. 在使用vlookup语法之前,请使用以下代码-

出现错误时转到消息

查看:

尾码(检查:)将受到监视,如果接收到任何错误,它将转到“ message”语句

  1. 在代码末尾(在“结束子”之前),指定如果错误号为1004,则在消息框中显示“雇员数据不存在”。可以使用以下语法完成此操作:

信息:

如果Err.Number = 1004然后

MsgBox(“不存在员工数据”)

万一

单元1:

子vlookup3()

对于i = 4 To Cells(Rows.Count,“ C”)。End(xlUp).Row

单元格(i,“ B”)。值=单元格(i,“ D”)。值&“ _”&单元格(i,“ E”)。值

下一个iDim名称为String

昏暗的部门作为字符串

昏暗的lookup_val作为字符串

昏暗的薪水,因为Longname = InputBox(“输入员工的姓名”)

部门= InputBox(“输入员工的部门”)

lookup_val =名称&“ _”&departmentOn错误GoTo消息

查看:

薪水= Application.WorksheetFunction.VLookup(lookup_val,范围(“ B:F”),5,False)

MsgBox(“员工的薪水为”和薪水)消息:

如果Err.Number = 1004然后

MsgBox(“不存在员工数据”)

结束IfEnd子

Excel VBA中有关VLookup的注意事项

  • 可以使用WorksheetFunction在Excel VBA中调用Vlookup函数。
  • vlookup函数的语法在Excel VBA中保持不变。
  • 当VBA vlookup代码无法找到lookup_value时,将出现1004错误。
  • 如果vlookup函数中的错误返回错误,则可以使用goto语句对其进行管理。