如何通过引用当前工作表的名称来引用另一个工作表中的单元格?

24
我计划制作一个包含24个工作表的工作簿,工作表名称为:Jan,Jan item,Feb,Feb item等。
基本上这是用于预算的,月份命名的工作表具有摘要信息,名称中带有“item”的工作表具有更详细的信息。
现在,如果我想让“Jan”电子表格引用“Jan item”电子表格中的单元格J3,则可以执行以下操作:
='Jan item'!J3
但是,我不想为每个摘要表(Jan,Feb等)重新输入这样的公式,而是想拥有类似于:
=(引用此工作表名称 + " item")!J3
这样,我可以将公式从Jan复制到Feb,并且它将自动查看正确的Xxx item工作表,而无需显式输入Feb item。
我提出这个问题的原因是,对于每个摘要表,都会有数十个指向相应分类表中单元格的引用。
这样做可行吗?

VBA代码可以吗?还是只需要公式? - Daniel Möller
只需从一月工作表中复制公式,然后在二月工作表中执行查找/替换所有操作,将“Jan”替换为“Feb”等。否则,您需要使用一些VBA。 - David Zemens
丹尼尔 - 我原本只打算使用公式 - 我对VBA一窍不通。但是,如果那是唯一的解决方案,我想看看它。最坏的情况下,我会采用大卫的解决方案 - 现在看起来显而易见...令人尴尬的是,这是其中一个“我看不到它,它就在眼前!”的时刻的解决方案。 - King_V
3个回答

32

仍在使用间接方式。假设您的A1单元格是将包含所引用工作表的名称(Jan)的变量。

如果按照以下方式进行:

=INDIRECT(CONCATENATE("'",A1," Item'", "!J3"))

那么您将获得'Jan Item'!J3的值。


6
我刚刚非常有效地使用了这个方法。我发现通过使用&进行连接,阅读变得更加容易。这将使您的示例变为 INDIRECT("'" & A1 & " Item'!J3") - corsiKa

12

除非您想使用VBA的方法来解决选项卡名称,否则基于Mid函数等的Excel公式相当丑陋。

但如果您想使用这两种方法,可以在此处找到它们。

相反,我会这样做:

1)在您的工作表上创建一个名为“Reference_Sheet”的单元格,并在该单元格中放入“Jan Item”等值。

2)现在,使用Indirect函数,例如:

=INDIRECT(Reference_Sheet&"!J3") 

3) 现在,对于每个月的表格,您只需更改那个 Reference_Sheet 单元格即可。

希望这能给您提供所需的信息!


天啊,那个 MID 等方法真的很丑陋!我可能会使用你或者 David 的解决方案。谢谢! - King_V
那一行给了我一个“VALUE错误”。有任何想法是为什么吗?在“Reference_Sheet”中,“J3”单元格中的文本只有一个单词,我不认为会有任何不匹配... - user1341676
1
奇怪的是,如果您的“Reference_Sheet”单元格中的数据只有一个单词,它应该可以工作...在我的示例表格上确实如此...但为了安全起见,可能尝试将公式更改为 = INDIRECT(“'”&TRIM(Reference_Sheet)&“'!J3”)...这将考虑到您的“Reference_Sheet”单元格可能存在一些可能会使其出错的字符以及该单元格中可能有多个单词的可能性...如果这解决了问题,请告诉我... - John Bustos

0

这是我如何以类似 Fernando 的方式制作每月页面的方法:

  1. 我在每个月的每一页手动写上了页码,并将该位置命名为ThisMonth。请注意,您只能在复制表格之前这样做。复制后,Excel不允许您使用相同的名称,但是在表格副本中仍然可以使用。此解决方案也适用于无需命名的情况。
  2. 我在位置C12中添加了该月的周数。命名也可以。
  3. 我在每一页上都设置了五周,在第五周上我设置了以下函数:

    =IF(C12=5,DATE(YEAR(B48),MONTH(B48),DAY(B48)+7),"")
    

    如果本月只有四周,则此函数会清空第五周。C12保存着周数。

  4. ...
  5. 我创建了一个年度Excel,其中包含12个工作表:每个月一个。在此示例中,工作表的名称为“Month”。请注意,此解决方案也适用于ODS文件标准,除了您需要将所有空格更改为“_”字符。
  6. 我将第一个“Month”工作表重命名为“Month (1)”,以遵循相同的命名原则。如果您愿意,您也可以将其命名为“Month1”,但是对于“January”,需要进行一些额外的工作。
  7. 在第二张工作表的第一天字段中插入以下函数:

    =INDIRECT(CONCATENATE("'Month (",ThisMonth-1,")'!B15"))+INDIRECT(CONCATENATE("'Month (",ThisMonth-1,")'!C12"))*7
    

    换句话说,如果您在上一个表格上填写了四周或五周,则此函数会正确计算日期并从正确的日期继续。


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