excel查询并返回另一个工作簿的数据
工作簿A(空表,需要输入编号)和工作簿B(有多个工作表,每个表内有编号,及该编号的其它信息,比如序号,规格,等级,重量等)在A里输入编号,想要自动查询B里是否有相同的编号...
工作簿A(空表,需要输入编号)和工作簿B(有多个工作表,每个表内有编号,及该编号的其它信息,比如序号,规格,等级,重量等)
在A里输入编号,想要自动查询B里是否有相同的编号,有的话返回该行的部分其它数据(比如等级和重量)
在知道工作表的情况下我是用INDEX,但是工作表有多个,无法确定是哪个工作表下,如何直接查询并返回? 展开
在A里输入编号,想要自动查询B里是否有相同的编号,有的话返回该行的部分其它数据(比如等级和重量)
在知道工作表的情况下我是用INDEX,但是工作表有多个,无法确定是哪个工作表下,如何直接查询并返回? 展开
2014-05-13
展开全部
如果工作簿B各数据表中的格式是一样的,则可以汇总成一张汇总表,然后A表用VLOOKUP函数进行查询。
如果格式不同,需要使用VBA进行处理。
如果格式不同,需要使用VBA进行处理。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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)
你测试一下看看,思路应该是对的
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。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
有一种函数叫 VLookup 你试试看
追问
怎么用vlookup返回查询列之前的数据?
比如编号在B列,怎么返回A列的数据?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
vlookup, 对应于工作表B的不同工作表多做几个不同vlookup就行
追问
怎么用vlookup返回查询列之前的数据?
比如编号在B列,怎么返回A列的数据?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询