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代码。
- 定义存在值的范围,即B和C列。
设置myrange =范围(“ B:C”)
- 定义员工的姓名,并从单元格F4中输入姓名。
设置名称=范围(“ F4”)
- 将薪水定义为单元格G4。
设定工资=范围(“ G4”)
- 现在,使用VBA中的WorksheetFunction调用VLOOKUP函数,并将其输入salary.Value中。这将返回单元格G4中的值(Vlookup函数的输出)。可以使用以下语法:
薪金。价值= Application.WorksheetFunction.VLookup(name,myrange,2,False)
- 现在,运行模块。运行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中查找查找值,您需要首先输入查找值。让我们从用户那里获取值(名称和部门)。去做这个,
- 将三个变量(名称,部门和lookup_val)定义为字符串。
- 从用户那里输入名称。使用代码:
名称=输入框(“输入员工姓名”)
运行代码时,输入框中“输入..”中的内容将显示在提示框中。在提示中输入的字符串将分配给name变量。
- 从用户那里拿部门。可以与上述类似地完成。
部门= InputBox(“输入员工的部门”)
- 使用以下语法,将名称和部门以“ _”作为分隔符分配给变量lookup_val:
lookup_val =名称&“ _”&部门
- 编写vlookup语法以搜索范围B5:E24中的lookup_val,并以可变薪水返回它。
初始化可变工资:
薪水低至
使用Vlookup函数查找lookup_val。 table_array可以指定为Range(“ B:F”),并且工资在第5列中显示。因此可以使用以下语法:
薪水= Application.WorksheetFunction.VLookup(lookup_val,范围(“ B:F”),5,False)
- 要在消息框中打印薪水,请使用以下语法:
MsgBox(员工的薪水为“&薪水”)
现在,运行代码。在工作表中将出现一个提示框,您可以在其中输入名称。输入名称(说“ Sashi Sashi”)后,单击“确定”。
它将打开另一个框,您可以在其中输入部门。进入部门后,请说IT。
它将打印员工的薪水。
如果Vlookup可以找到具有名称和部门的任何员工,则会出现错误。假设您输入名称“ Vishnu”和部门“ IT”,它将返回运行时错误“ 1004”。
要解决此问题,您可以在代码中指定针对这种类型的错误,打印“找不到值”。去做这个,
- 在使用vlookup语法之前,请使用以下代码-
出现错误时转到消息
查看:
尾码(检查:)将受到监视,如果接收到任何错误,它将转到“ message”语句
- 在代码末尾(在“结束子”之前),指定如果错误号为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语句对其进行管理。