例如我要在C列查找H3单元格的姓名并在H4单元格中返回搜索姓名所在的行数,我可以使用Match函数返回查找单元格位置进行查找,只要在VBA代码窗口输入以下代码即可:
Sub 使用工作表函数查找姓名所在行()
Range(“H4”)=Application.Match(Range(“H3”),Range(“C:C”),0)
End Sub
又如我要在EXCEL2010工作表中,要根据H7单元格内容,在C列查找并返回该姓名所对应的年龄,并把查找的年龄填入到H8单元格中。我可以利用Vlookup函数返回搜索的内容,在VBA代码窗口中输入以下代码即可实现:
Sub 查找姓名对年龄()
Dim Mrow As Integer
Mrow=Range(“C:C”):Find(Range(“H7”)).Row
Range(“H8”)=Range(“E” & Mrow)
End Sub
当我在运行该程序后,即可在H8单元格中根据姓名查找出目标的年龄。其中,Range(“C:C”).Find(Range(“H7”)).Row表示查找H7中的姓名在C列所在的行数;Range(“E” & Mrow)表示根据求出的行数和指定的列数得到所对应的年龄。我也可以使用工作表函数Vlookup进行查找,同样可实现根据姓名查找年龄,只要在VBA代码窗口输入以下代码即可实现:
Sub 使用工作表函数查找姓名对应的年龄()
Range(“H8”)=Application.VLookup(Range(“H7”),Range(“C:E”),3,0)
End Sub
在EXCEL2010VBA中使用Vlookup函数和在工作表中使用的方法一样,也需要设置其4个参数,区别是在VBA中需要用VBA的单元格表示方法。
在EXCEL2010中当一个数据清单中有多个重复的信息时,此时我需要借助循环来实现重复查找。例如在EXCEL2010的工作表中,C列中有多个商品名称为“海尔冰箱”的商品,要求查找最后一个商品名称为“海尔冰箱”的入库价格并填入到G4单元格中。此时我可以在VBA中输入以下代码即可快速实现:
Sub 查找最新价格()
Dim i As Integer '定义i为整数,程序中i是C列中海尔冰箱的个数
Dim Mrg As Range '定义Mrg为单元格对象,Mrg作为查找的开始单元格
i = Application.CountIf(Range("C:C"), Range("G3"))
'调用工作表函数Count计算C列中海尔冰箱的个数
Set Mrg = Range("C3") '设置Mrg的初始单元格为C3,即在下面的查找过程中首先从C3开始查找
For s = 1 To i '要根据海尔冰箱的个数(i值)设置查询的次数
Set Mrg = Range("C:C").Find(Range("G3"), Mrg)
'每一次新的查找都从查找到的单元格开始
Next s
Range("G4") = Mrg.Offset(0, 1) '单元格G4的值等于查找到的单元格右边一个单元格的值,即入库价格
End Sub
当我在运行该程序后,即可在G4单元格中查找出海尔冰箱的最后入库单价。Find(Range(“G3”),Mrg)中的第2个参数为查找的开始单元格,Mrg会随着查找时所代表的单元格不断更新,而且又利用更新过的Mrg作为新的查找起点。