vlookup 如何用VBA实现

我在1.xls中sheet中
A B C D
张三 10
李四 20
王五 30
在2.xls中sheet1中
A B C D E
王五 X
张三 X
求vba代码,在2.xls中,取得E列的值
希望能运行速度快~谢谢了,
不好意思,直接调用速度很慢的,我数据量比较大,不能直接调用

1、首先在电脑上打开Excel表格,点击【开发工具】,【Visual Basic】。

2、在VBA工程项目里面双击“Sheet2(Sheet2)”打开代码输入窗口。

3、在代码窗口里面输入以下VBA程序代码:Private Sub Worksheet_SelectionChange(ByVal Target As Range) '工作表选定区域发生改变时执行,On Error Resume Next   'VBA忽略之后的语句错误。

4、在Sheet2表格上面的A3:A1000单元格输入查找值时,同一行的显示范围里面的单元格就会显示出相应的结果。

5、如果后续要继续使用该VBA程序,可以将表格另存为启用宏的工作薄。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-10-05
这个用VBA字典,最快最简单了,代码及注释如下:
sub main()
set dic=createobject("scripting.dictionary")'后期绑定字典
for i=1 to 100'Sheet1中有多少行,这里改为多少
dic(sheets(1).cells(i,"A").value)=sheets(1).cells(i,"C")'Sheet1中名为字典目录,数值为字典项目
next
for i=1 to 200'sheet2中最大行数
if dic.exists(cells(i,"A").value) then'如果字典中存在
cells(i,"C")=dic(cells(i,"A").value)'将字典中相应的值赋予C列中
end if
next i
end sub
第2个回答  2012-02-17
在VBA中用下面的格式直接调用
Application.WorksheetFunction.函数名
那你试试用这个宏.
具体的参数你根据你的情况修改.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 Then
Dim rng1 As Range
aa = Target
Set rng1 = Sheet1.Range("B:B").Find(aa, lookat:=xlWhole)
If Not rng1 Is Nothing Then
Target.Offset(0, 3) = rng1.Offset(0, 1)
End If

End If
End Sub追问

请教, 有个excel(1.xls和2.xls),源数据来自于1.xls的sheet1,在2.xls中取E列,

第3个回答  2012-02-17
http://zhidao.baidu.com/question/378756284.html?oldq=1追问

这个例子是在同个excl中的哦,我的是2个excel

本回答被提问者采纳
第4个回答  2012-02-17
你到底是调到那个地方,调什么样的数据?执行vba本身并不见得比函数块。
相似回答