我正在尝试使用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
,但没有用。谁能建议实现这一目标的方法?
答案 0 :(得分:0)
您非常亲密。
假定您有工作簿WB2
,其中包含您描述的三个工作表:DOD8.2
,DOD9.2
和DOD10.2
。在每张纸的单元格A1中,分别有文本值foo
,bar
和baz
。
在电子表格WB1
中,您可以按以下方式访问这三个值:
=INDIRECT(CONCAT("[WB2.xlsx]", LEFT(A1, FIND("x",A1)-1), "!$A$1"))
例如:
concat
函数在WB2
中构建一个字符串,该字符串表示对所需工作表的引用。然后indirect
函数将该字符串解释为实际的单元格引用,并显示该单元格的内容。
如果您更喜欢使用&
而不是concat
,则可以使用以下方法:
=INDIRECT("[WB2.xlsx]" & LEFT(A1, FIND("x",A1)-1) & "!$A$1")