【问题标题】:Refer to a cell in another worksheet by referencing the current worksheet's name?通过引用当前工作表的名称来引用另一个工作表中的单元格?
【发布时间】:2013-03-27 19:52:39
【问题描述】:

我计划制作一个 24 张工作簿。工作表名称将为:Jan、Jan item、Feb、Feb item 等。

基本上它是用于预算的,以月份命名的表格具有摘要信息,而名称中带有“项目”的月份则具有更详细的信息。

现在,如果我希望“Jan”电子表格有一个单元格引用“Jan item”电子表格中的单元格 J3,我可以执行以下操作:

='Jan item'!J3

但是,不必为每个摘要表(1 月、2 月等)重新输入这样的公式,我想要这样的东西:

=(reference-to-this-sheet's-name + " item")!J3

这样,我可以将公式从 1 月复制到 2 月,它会自动查看正确的 Xxx item 工作表,而无需我明确输入 Feb item

我问这个的原因是,对于每个摘要表,在相应的分项表中都会有几十个这样的对单元格的引用。

我的要求可行吗?

【问题讨论】:

  • 是否接受 VBA 代码???或者你只需​​要公式?
  • 只需从一月份的工作表中复制公式,然后在二月份的工作表中执行查找/替换所有操作,将“Jan”替换为“Feb”等。否则,您需要使用一些VBA。
  • Daniel - 我只计划使用公式 - 我对 VBA 一点也不熟悉。不过,如果这是唯一的解决方案,我希望看到它。最坏的情况,我会选择大卫的解决方案——这在我读过之后似乎很明显。 . .令人尴尬的是,这是一种“我看不到它,它在视线水平!”的解决方案之一。时刻。

标签: excel excel-formula worksheet-function


【解决方案1】:

仍在使用间接。 假设您的 A1 单元格是您的变量,它将包含引用工作表的名称(Jan)。 如果你经过:

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

然后您将获得 'Jan Item'!J3 值。

【讨论】:

  • 我刚刚非常有效地使用了它。我发现使用& 进行连接更容易阅读。这将使您的示例INDIRECT("'" & A1 & " Item'!J3")
【解决方案2】:

除非您想通过 VBA 路线来计算选项卡名称,否则基于 Mid 函数等的 Excel 公式相当难看。 但是如果你想走这条路,这两种方法都可以找到here

相反,我会这样做:

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

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

=INDIRECT(Reference_Sheet&"!J3") 

3) 现在,对于每个月的工作表,您只需更改一个 Reference_Sheet 单元格。

希望这能满足您的需求!

【讨论】:

  • 天哪,那个 MID 等方法太丑了!我可能会使用你的或大卫的解决方案。谢谢!
  • 那行给了我一个 VALUE 错误。知道为什么吗? “Reference_Sheet”中“J3”单元格中的文本只有一个单词,我不希望那里有任何不匹配......
  • 很奇怪,如果您的 Reference_Sheet 单元格中的数据只有一个字,它应该可以工作...在我的样本表上确实有效...不过为了安全起见,可能尝试将公式更改为此 =INDIRECT("'" & TRIM(Reference_Sheet) &"'!J3") ...这将说明您的 Reference_Sheet 单元格有一些字符可能会搞砸以及该单元格中包含超过 1 个单词的可能性......让我知道这是否解决了解决方案....
【解决方案3】:

这是我以与费尔南多类似的方式制作月度页面的方式:

  1. 我在每个月的页码上手动书写,并将那个地方命名为 ThisMonth。请注意,您只能在制作工作表副本之前 执行此操作。复制 Excel 后不允许您使用相同的名称,但使用工作表复制它仍然可以。此解决方案也可以不命名。
  2. 我将月份中的周数添加到位置 C12。命名也不错。
  3. 我在每个页面上做了五周,第五周我做了功能

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

    如果本月只有 4 周,则为第 5 周。 C12 保存周数。

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

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

    换句话说,如果您在前一张表上填写四五个星期,这将正确计算日期并从正确的日期继续。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-30
    • 1970-01-01
    • 1970-01-01
    • 2020-09-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多