excel查询并返回另一个工作簿的数据

工作簿A(空表,需要输入编号)和工作簿B(有多个工作表,每个表内有编号,及该编号的其它信息,比如序号,规格,等级,重量等)在A里输入编号,想要自动查询B里是否有相同的编号... 工作簿A(空表,需要输入编号)和工作簿B(有多个工作表,每个表内有编号,及该编号的其它信息,比如序号,规格,等级,重量等)
在A里输入编号,想要自动查询B里是否有相同的编号,有的话返回该行的部分其它数据(比如等级和重量)
在知道工作表的情况下我是用INDEX,但是工作表有多个,无法确定是哪个工作表下,如何直接查询并返回?
展开
 我来答
匿名用户
2014-05-13
展开全部
如果工作簿B各数据表中的格式是一样的,则可以汇总成一张汇总表,然后A表用VLOOKUP函数进行查询。

如果格式不同,需要使用VBA进行处理。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
冰焰Azyt
2014-05-13 · 超过18用户采纳过TA的回答
知道答主
回答量:62
采纳率:0%
帮助的人:45.1万
展开全部
Sub workshhet_change(ByVal target As Range)
Application.ScreenUpdating = False
Dim lj As String
Dim dirname As String
Dim nm As String
Dim a As Long, b As Long
Dim i As Long, pd As Long
Dim arr As Range
If target.Column = 1 Then
lj = ActiveWorkbook.Path
nm = ActiveWorkbook.Name
dirname = Dir(lj & "\*.xls*")
Do While dirname <> ""
If dirname <> nm Then
Workbooks.Open Filename:=lj & "\" & dirname
Workbooks(nm).Activate
With workboos(dirname)
a = .Sheets.Count
For i = 1 To a
pd = 1
Set arr = .Sheets(i).Range("a:a").Find(target.Value, , , xlWhole)
If Not arr Is Nothing Then
b = Cells(arr.Row, 100).End(xlUp).Column
.Sheets(i).Range(.Sheets(i).Cells(arr.Row, 2), .Sheets(i).Cells(arr.Row, b)).Copy _
Cells(target.Row, 2)
pd = 0
GoTo 100
Else
pd = 1
End If
Next
100
If pd = 1 Then
MsgBox ("无此编号")
DoEvents
End With
Workbooks(dirname).Close False
End If
dirname = Dir
Loop
End If
End Sub
试试这个,要求在工作簿A的A列输入编号,工作簿B的所有工作簿编号均在A列.。如果要改变复制内容,可修改代码
.Sheets(i).Range(.Sheets(i).Cells(arr.Row, 2), .Sheets(i).Cells(arr.Row, b)).Copy _
Cells(target.Row, 2)
你测试一下看看,思路应该是对的
更多追问追答
追问
不想用VBA怎么破...
追答
也行可以,但你的编号在不同的表内用公式我不知道怎么做了,可以问问那些高手怎么做
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-05-13
展开全部
Vlookup,用这个函数
更多追问追答
追问
怎么用vlookup返回查询列之前的数据?
比如编号在B列,怎么返回A列的数据?
追答

可以使用 VLOOKUP 函数搜索某个单元格区域 (区域:工作表上的两个或多个单元格。区域中的单元格可以相邻或不相邻。)的第一列,然后返回该区域相同行上任何单元格中的值。例如,假设区域 A2:C10 中包含雇员列表,雇员的 ID 号存储在该区域的第一列,如下图所示。

 

 

 

如果知道雇员的 ID 号,则可以使用 VLOOKUP 函数返回该雇员所在的部门或其姓名。若要获取 38 号雇员的姓名,可以使用公式 =VLOOKUP(38, A2:C10, 3, FALSE)。此公式将搜索区域 A2:C10 的第一列中的值 38,然后返回该区域同一行中第三列包含的值作为查询值(“Axel Delgado”)。

 

VLOOKUP 中的 V 表示垂直方向。当比较值位于所需查找的数据的左边一列时,可以使用 VLOOKUP 而不是 HLOOKUP。

 

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
冬天的阳光92
2014-05-13
知道答主
回答量:10
采纳率:0%
帮助的人:1.3万
展开全部
有一种函数叫 VLookup 你试试看
追问
怎么用vlookup返回查询列之前的数据?
比如编号在B列,怎么返回A列的数据?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
望穿秋涛
2014-05-13 · 超过17用户采纳过TA的回答
知道答主
回答量:55
采纳率:0%
帮助的人:45.2万
展开全部
vlookup, 对应于工作表B的不同工作表多做几个不同vlookup就行
追问
怎么用vlookup返回查询列之前的数据?
比如编号在B列,怎么返回A列的数据?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式