EXCEL - 从布局各异的多个工作表中提取数据

EXCEL - 从布局各异的多个工作表中提取数据

我有一个电子表格,其中包含物料清单数据和制造零件的人工成本。

第一个工作表包含组件的主零件编号,每个工作表代表一个零件的数据,并按零件编号命名。

每个工作表上都有一行包含文本“Assembly”

我需要做的是合并每个部件的装配数据。

因此,第一个工作表称为“Main”,零件编号在 A 列中,因此我需要获取第一个零件编号,找到相应的工作表,提取包含文本“Assembly”的行,然后将一行输出到包含零件编号和装配数据的新工作表。

我将非常感谢 EXCEL 专家能够提供的任何帮助。

非常感谢,

史蒂夫

答案1

让我确认一下我理解了这个问题。工作簿中的第一个工作表(其名称为“Main”)在 A 列中包含零件编号:

后续工作表以零件编号作为其名称。这些工作表具有“各种布局”,但它们的 A 列中都有一个单元格包含单词“Assembly”:

并且您想要使用“零件”数据表中的“组件”行填充合并表。


在“合并”工作表的 A1 单元格中输入

=VLOOKUP("assembly", INDIRECT(Main!$A1&"!$A$1:$Z$9"), COLUMN()-COLUMN($A$1)+1, FALSE)

调整$Z$9以对应最长的“assembly”行和“assembly”出现的最高行号。(为安全起见,请将其设置为任何工作表上的最大行数。)然后选择此单元格,将其拖出到适当的列数,然后将其向下拖到适当的行数。

解释:

  • Main!$A1从第一个(主)表的 A1 单元格获取零件编号。A通过 使 成为绝对值$,因此,即使将其拖到右侧,它仍保持$A。但1是相对值(无$),因此,当您将其向下拖到“合并”表的第 2 行时,它变为Main!$A2
  • Main!$A1&"!$A$1:$Z$9"将零件编号(即“零件”数据表的名称)与字符串!$A$1:$Z$9(根据您的实际维度进行调整)连接起来,形成一个字符串,例如17!$A$1:$Z$9。这是“零件”工作表地址范围的文本表示。如果您的任何零件编号包含空格(或感叹号),则需要将工作表名称放在引号中:"'"&Main!$A1&"'!$A$1:$Z$9"。如果您的任何零件编号包含单引号(撇号),则会出现问题。
  • INDIRECT(Main!$A1&"!$A$1:$Z$9")采用地址范围的文本表示并将其转换为实际的地址范围。
  • COLUMN()是当前单元格的列号。  COLUMN($A$1)为 1。因此,该公式的COLUMN()-COLUMN($A$1)+1结果就是COLUMN();即当前列号。
  • VLOOKUP("assembly", address range, column number, FALSE) 搜索地址范围(数据表)中的某一行(VLOOKUP垂直搜索(英语:垂直搜索)包含assembly第一列的数据,并返回指定列的值。

我曾经COLUMN($A$1)这样做过,你可以在左侧插入一列,然后所有内容都会自动移动。例如,你可能想将以下内容放入=Main!$A1合并表的第 1 列:

您会注意到,零件数据表上的空白单元格在合并表中显示为零。如果这是问题,请参阅在 Excel 中引用空白单元格时显示空白。如果您的主表包含与数据表不对应的零件编号,则合并表上会出现错误。您可以使用 处理这些问题IFERROR()

相关内容