从另一个工作簿中各个工作表的单元格中获取值

时间:2020-05-05 16:04:35

标签: excel excel-formula

我正在尝试使用Excel公式而不是VBA执行以下操作。我有两个工作簿(例如WB1和WB2),并且都在Excel中打开。在WB1中,我有一个带有单元格的工作表(例如A1),该单元可以具有不同的代码,其中一部分是WB2中一个工作表的名称。这些代码的格式为DOD8.2x1.9, DOD8.2x2.4...DOD9.2x1.9, DOD9.2x2.4.., DOD10.2x4.9等,其中x之前的字符是指WB2中的工作表(即DOD8.2, DOD9.2, DOD10.2等)。我需要一个用于WB1中另一个单元格(例如B1)的公式,该公式可以获取此代码定义的WB2中工作表中特定单元格的值。我知道B1=[WB2.xlsx]DOD8.2!$EB$6形式的=[WB2.xlsx]DOD10.2!$EB$6公式是如何从WB2中的特定工作表获取单元格值的,公式=LEFT(A1, FIND("x",A1)-1)会提取相关部分A1中的单元格为我提供了WB2中特定工作表的名称,但我无法解决如何使用它来构造一个公式的方法,该公式将两者结合起来以自动选择A1中的代码定义的工作表。我尝试用DOD10.2替换通用公式中的工作表名称(例如LEFT(A1, FIND("x",A1)-1)),所以我最终使用不同的串联方法来=[WB2.xlsx]LEFT(A1, FIND("x",A1)-1)!$EB$6,但没有用。谁能建议实现这一目标的方法?

1 个答案:

答案 0 :(得分:0)

您非常亲密。

假定您有工作簿WB2,其中包含您描述的三个工作表:DOD8.2DOD9.2DOD10.2。在每张纸的单元格A1中,分别有文本值foobarbaz

在电子表格WB1中,您可以按以下方式访问这三个值:

=INDIRECT(CONCAT("[WB2.xlsx]", LEFT(A1, FIND("x",A1)-1), "!$A$1"))

例如:

enter image description here

concat函数在WB2中构建一个字符串,该字符串表示对所需工作表的引用。然后indirect函数将该字符串解释为实际的单元格引用,并显示该单元格的内容。

如果您更喜欢使用&而不是concat,则可以使用以下方法:

=INDIRECT("[WB2.xlsx]" & LEFT(A1, FIND("x",A1)-1) & "!$A$1")