我有一个" Master"在A栏中有部件编号,在B列中有位置的工作表。我有大约200张只有A部分编号的工作表。如何将VLOOKUP应用到所有工作表中,以便每张工作表上的每个部件编号都在B列中有我的位置?手动完成需要永远。感谢
答案 0 :(得分:0)
以下是从Master
工作表中查找数据的一种方法,假设包含查找值的起始单元格为A2
。这也假定所有工作表都在同一个工作簿中:
=VLOOKUP(A2,Master!$A$2:$B$11,2)
解释每个参数从左到右的作用:
A2
- 包含200张其中一张的查找值的单元格。 (这可以是包含查找值的任何单元格。)Master
是包含要查找的数据的工作表的名称。$A$2
是要在Master
工作表中查找的表数据的左上角单元格,我们要使用$ sign,因为查找表左上角的单元格应该是固定的。$B$11
是表格在Master
表单中查找的右下方单元格,我们希望使用$ sign,因为查找表右下角的单元格应该是固定的。2
,这是列索引,其中包含您希望为成功查找返回的值。列索引从1开始并向右增加。索引1处的列包含查找值。在您的方案中,索引1是A列,指定索引2将索引列B 要处理表中未找到的空白单元格或单元格,您可以像这样扩展此公式:
=IF(ISNA(VLOOKUP(A2,Master!$A$2:$B$11,2)),"",VLOOKUP(A2,Master!$A$2:$B$11,2))
此公式将执行查找,如果找不到它要查找的值,则会将单元格留空,否则会使用找到的数据填充单元格。
您现在可以复制并粘贴到单元格A2
(或用起始单元替换A2
),然后将列中的公式拖到数据中需要VLOOKUP
的最后一个单元格Master
表格中的表格。对于每一行X,它将更新相应查找值的查找返回数据。
您需要复制公式然后拖动它以填充每200张纸的整个B列,这有点单调乏味。另一种方法是编写一个循环遍历工作簿中每个工作表的宏,并使用主工作表中的查找结果填充相应的列。
VLOOKUP
在查找值位于某个列X中时起作用,而要返回的值(数据)位于X的右侧。
如果要返回的数据位于查找值的左侧,则必须使用MATCH
和INDEX
的组合,这稍微复杂一些。
要在不同的工作簿中查找数据,您需要在两个工作簿之间创建链接this article explains how to do so.
答案 1 :(得分:0)
考虑将所有数据更改为单页。你可以试试这个自制功能:
Function AllSheetVLookup(ByVal lookup_value, ByVal search_col As Long, ByVal return_col As Long, Optional book_rng As Range)
Dim ws As Worksheet, r As Long
On Error Resume Next
For Each ws In IIf(book_rng Is Nothing, Application.Caller, book_rng).Worksheet.Parent.Worksheets
r = Application.WorksheetFunction.Match(lookup_value, ws.Columns(search_col), 0)
If r Then AllSheetVLookup = ws.Cells(r, return_col): Exit Function
Next
AllSheetVLookup = CVErr(2042) 'Not found, #N/A! returned
End Function
lookup_value
- 要搜索的值,在VLOOKUP中有;
search_col
- 工作表中要搜索值的列号
return_col
- 用于匹配匹配的返回值的列号
book_rng
- 可选。如果要搜索另一本书,则在另一本书中单元格。如果省略,则使用预订函数调用的地方。
示例:
=AllSheetVLookup("part_number", 1, 2)
将搜索价值" part_number"在当前书的所有工作表中的A列(第1列)中,以及B列(第2列)的返回值。