多张数据中的查找功能

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