我有一本工作簿,其中的工作表包含以下内容: 目的地工作表
单元格 B1、C1、D1 中的数据需要等于名为 DOD11.2 的同一工作簿中工作表中单元格 A1、A2、A3 的值(即,工作表的名称与单元格 A1、A2、A3、A4 中的字符串中字符 x 之前的字母相同)
单元格 B2、C2、D2 中的数据应等于同一 DOD11.2 工作表中单元格 B1、B2、B3 的值。同样,单元格 B3、C3、D3 应等于 DOD11.2 中单元格 C1、C2、C3 的值,单元格 B4、C4、D4 应等于 DOD11.2 中 D1、D2、D3 的值。
然后需要对单元格 B6、C6、D6;B7、C7、D7 等重复此序列,但这次它们的值需要等于名为 DOD12.2 的工作表中单元格 A1、A2、A3;B1、B2、B3 等中的数据(即,工作表的名称现在与单元格 A6、A7、A8、A9 中的字符串中字符 x 之前的字母相同)
如果您对我可以在单元格 B1 中使用的公式有任何建议,我将非常感激,该公式可以复制到其他单元格中,并能正确引用相应的源工作表和单元格。
感谢您的建议。我了解您如何使用 CHAR 函数以及当前单元格的行和列值来计算源单元格的值。不幸的是,为了让查询更容易理解,我没有在原始帖子中给出完整的故事,因此您的建议并不能完全解决我的问题。实际的目标表如下所示实际目的地表其中显示的单元格编号(AD8、BM8...、AD9、BM9 等)是需要从源工作表中检索的实际单元格地址。此外,我在目标工作表中有大约 70 行需要分配公式。如有任何进一步的建议,我将不胜感激。
答案1
您可以使用间接函数并组装一个包含单元格地址的字符串。
假设您有中的文件名称E7
、中的该文件内的工作表名称E9
以及中的单元格名称E11
,请使用公式
=INDIRECT("'["&E7&"]"&E9&"'!"&E11)
在您的特定情况下,您正在访问同一文件中的工作表,因此公式变为
=INDIRECT("E9&"!"&E11)
单元格 A1 中的工作表名称为 =left(A1,7)
第 1 行中的单元格来自该工作表的 A 列,
第 2 行中的单元格来自该工作表的 B 列,等等。
因此列名是 char(64+<单元格行号>)
B 列中的单元格来自第 1 行,
C 列中的单元格来自第 2 行,等等
,因此行号为 <列号>-1
所有这些给了我们以下公式,将其复制到 B1 中,然后向右向下填充
=INDIRECT(left($a1,7)&"!"&char(row()+64)&column()-1)
如果行数超过 26 行,就会中断。