使用单元格中的字符串值来访问同名的工作表

56

我有两个工作表:SummarySERVER-ONE

在Summary工作表的单元格A5中,我添加了值SERVER-ONE

在它旁边的单元格B5中,我想使用A5中的值,显示同名工作表(SERVER-ONE)中G7的值。

我可以手动使用:

='SERVER-ONE'!G7

不过我希望这个是动态的,这样我就可以轻松地添加更多的工作表。

我尝试了显而易见的方法,但没有成功:

='A5'!G7

有任何建议吗?

8个回答

102

您可以使用公式 INDIRECT()

这个公式基本上将字符串作为引用来处理。在您的情况下,您会使用:

=INDIRECT("'"&A5&"'!G7")

双引号表示引用的是字符串,这里只有A5是一个引用。


13
你需要使用INDIRECT函数:
=INDIRECT("'"&A5&"'!G7")

5

这里有一个使用INDIRECT函数的解决方案,如果您拖动公式,它将相应地从目标工作表中选择不同的单元格。它使用R1C1记法,不仅限于仅在A-Z列上工作。

=INDIRECT("'"&$A$5&"'!R"&ROW()&"C"&COLUMN(),FALSE)

这个版本从目标单元格中获取与公式所在单元格相对应的值。例如,如果您将公式放在'Summary'!B5中,则它将从'SERVER-ONE'!B5中获取值,而不是原始问题中指定的'SERVER-ONE'!G7。但是,您可以轻松添加行和列的偏移量以在任何情况下实现所需的映射。


5

不确定你是否解决了你的问题,但我发现这个方法可以在拖拽时递增行号。

= INDIRECT("'"&$A$5&"'!$G"&7+B1)

B1代表索引号,从0开始。

因此,如果您复制并拖动索引单元格和带有间接公式的单元格,则会增加间接引用。

您可能还可以使用Index函数创建更优雅的计数器。

希望这可以帮助您。


3
通过使用ROW()函数,我可以垂直拖动此公式。由于D前没有$,因此也可以水平拖动。
= INDIRECT("'"&D$2&"'!$B"&ROW())

我的布局将Sheet名称作为列标题 (B2, C2, D2, 等等) 并映射每个工作表中Column B 的多行值。


2

您需要使用INDIRECT函数。如下所示:

=INDIRECT("'"&A5&"'!G7")

使用INDIRECT函数,您可以将公式构建为文本字符串。


1

猜测@user3010492已测试过,但我使用了固定单元格A5--> $A$5和固定元素G7--> $G7

=INDIRECT("'"&$A$5&"'!$G7")

如果您将其括在括号中,它也可以很好地嵌套在其他公式中。


1
在这种情况下,是否可以通过抓住单元格的右下角并向下拉动来自动递增G7(G8、G9等),但保持A5不变? - Martin Sommervold
@MartinSommervold 不,你必须以某种方式进行计算。 - Jerry

0

这只能用于Z列,但是你可以水平和垂直地拖动它。

=INDIRECT("'"&$D$2&"'!"&CHAR((COLUMN()+64))&ROW())

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接