多张数据中的查找功能
Lookup function in multiple sheets data
我有多个 sheet 数据,我想将其合并到一个 sheet 中(所有数据都在同一个工作簿中)。 Link to the excel file.
我尝试在 excel 文件中使用 Hlookup
函数,如下所示:
=HLOOKUP("University",Sheet1!$A:$G, 2, FALSE).
但是,由于我有超过 100 sheet 的数据,我想找到一种方法来拖动函数并在第二行下方自动生成函数。我尝试通过在前面设置一个引用列来使用间接函数,但无法处理它。
=HLOOKUP("University", 'INDIRECT(A3)'!$A:$G, 2, FALSE)
我的下一个选择是 VB 代码。但是,我是 VB 的新手。有人可以帮忙吗?
将您个人的 sheet 姓名放在 Summary
sheet 的 H 列中,将行号放在 I 列中(作为辅助列),然后将此公式写入单元格 A2
摘要 sheet.
=IFERROR(HLOOKUP(A,INDIRECT($H2&"!A1:G"&$I2),$I2,0),)
并拖动到 F 列并向下拖动至您拥有的 sheet 行组合。我使用了 10 行,但您显然可以根据需要使其更长或更短。
完成后,您可以过滤 A 列中的 0 并删除所有没有数据的行。
如果您的 sheet 名称中有空格,您需要将 INDIRECT
公式调整为:
INDIRECT("'"&$H2&"'!A1:G"&$I2)
假设您已经在 A 列中输入了所有 100 多个 sheet 名称,无论 sheet 名称中是否有空格,这都将起作用:
=HLOOKUP("University", OFFSET(INDIRECT(ADDRESS(1,1,1,1,A2)),0,0,2,7),2,FALSE)
最好的方法是 "defined names" + INDIRECT
+ HLOOKUP
(或 LOOKUP
),例如:
defined names
name: SList
formula: =MID(TRANSPOSE(GET.WORKBOOK(1))&T(NOW()),FIND("]",TRANSPOSE(GET.WORKBOOK(1))&T(NOW()))+1,255)
单元格中的公式:(这个在 A2
中,然后简单地自动填充到 G2
,然后一切都往下)(你会在 sheet 之间得到一行 0,这以后可以过滤掉或删除(copy/paste 个值))
=IFERROR(HLOOKUP(A,INDIRECT("'"&INDEX(SList,COUNTIF($A:$A1,0)+2)&"'!$A:$G"),$H2,0),"")
将 H2
设置为 2,对于 H3
:(从 H3
自动向下填充)
=MAX(($H2+1)*($A2>0),2)
非常适合我LINK
无需手动输入 sheet 名称或类似内容(仅 H:H
列作为帮助)。每次选择可以过滤掉的新 sheet 时,您都会得到带 0 的行。 (或者如果你 copy/paste 值也可以删除)
...st,COUNTIF($A:$A1,0)+2)&...
处的 +2
只是告诉我们从 sheet 2 开始(如果摘要是第一个)。如果您想从第一个 sheet 开始查找,您可以将其更改为 +1
。
我有多个 sheet 数据,我想将其合并到一个 sheet 中(所有数据都在同一个工作簿中)。 Link to the excel file.
我尝试在 excel 文件中使用 Hlookup
函数,如下所示:
=HLOOKUP("University",Sheet1!$A:$G, 2, FALSE).
但是,由于我有超过 100 sheet 的数据,我想找到一种方法来拖动函数并在第二行下方自动生成函数。我尝试通过在前面设置一个引用列来使用间接函数,但无法处理它。
=HLOOKUP("University", 'INDIRECT(A3)'!$A:$G, 2, FALSE)
我的下一个选择是 VB 代码。但是,我是 VB 的新手。有人可以帮忙吗?
将您个人的 sheet 姓名放在 Summary
sheet 的 H 列中,将行号放在 I 列中(作为辅助列),然后将此公式写入单元格 A2
摘要 sheet.
=IFERROR(HLOOKUP(A,INDIRECT($H2&"!A1:G"&$I2),$I2,0),)
并拖动到 F 列并向下拖动至您拥有的 sheet 行组合。我使用了 10 行,但您显然可以根据需要使其更长或更短。
完成后,您可以过滤 A 列中的 0 并删除所有没有数据的行。
如果您的 sheet 名称中有空格,您需要将 INDIRECT
公式调整为:
INDIRECT("'"&$H2&"'!A1:G"&$I2)
假设您已经在 A 列中输入了所有 100 多个 sheet 名称,无论 sheet 名称中是否有空格,这都将起作用:
=HLOOKUP("University", OFFSET(INDIRECT(ADDRESS(1,1,1,1,A2)),0,0,2,7),2,FALSE)
最好的方法是 "defined names" + INDIRECT
+ HLOOKUP
(或 LOOKUP
),例如:
defined names
name: SList
formula: =MID(TRANSPOSE(GET.WORKBOOK(1))&T(NOW()),FIND("]",TRANSPOSE(GET.WORKBOOK(1))&T(NOW()))+1,255)
单元格中的公式:(这个在 A2
中,然后简单地自动填充到 G2
,然后一切都往下)(你会在 sheet 之间得到一行 0,这以后可以过滤掉或删除(copy/paste 个值))
=IFERROR(HLOOKUP(A,INDIRECT("'"&INDEX(SList,COUNTIF($A:$A1,0)+2)&"'!$A:$G"),$H2,0),"")
将 H2
设置为 2,对于 H3
:(从 H3
自动向下填充)
=MAX(($H2+1)*($A2>0),2)
非常适合我LINK
无需手动输入 sheet 名称或类似内容(仅 H:H
列作为帮助)。每次选择可以过滤掉的新 sheet 时,您都会得到带 0 的行。 (或者如果你 copy/paste 值也可以删除)
...st,COUNTIF($A:$A1,0)+2)&...
处的 +2
只是告诉我们从 sheet 2 开始(如果摘要是第一个)。如果您想从第一个 sheet 开始查找,您可以将其更改为 +1
。