如何dynamic更新Excel中工作表的名称?

我有一个Excel电子表格,用来为我们的Unix团队指定文件系统的构build信息。

根据要构build的系统,此工作表将具有不同的信息。 例如,一个生产系统会有很多文件系统,而一个开发系统只有一两个。

因此,根据用户input,我们将填充两个input工作表格式(“dev”,“prod”)中的一个或另一个,但目标工作表将始终相同。 只有其中一个dev或prod工作表可以在任何给定时间显示和激活以供用户input数据。

我们如何告诉Excel使用特定的input工作表来计算另一个输出工作表?

我最初的想法是,为了简单起见,“输出”工作表将从“input”工作表中获取其数据,并且我们将dynamic地使“dev”或“prod”模板成为“input”工作表。 这是做这个的正确方法,还是有一些更好的方法?

有几种方法取决于工作表的复杂性:

  • 如果您只有几个工作表,用户只需select“生产”或“testing”,则可以在公式中设置条件逻辑。 例如:= if(A1 =“Test”,TestSheet!A1 + TestSheet!A2,ProdSheet!A1 + ProdSheet!A2)
  • 你可以使用与上面相同的思想types,但是使用vlookup表增加更多的复杂性
  • 您的VBA代码可以根据用户inputdynamic地创build整个Excel电子表格

如果你可以像LuckyLindy所说的那样使用VBA代码,那么你可以做任何事情。 我曾经做过的是为各种操作loggingmacros,例如添加或重命名工作表,并采取生成的代码,并调整它完成所需的工作。

一个简单的macros代码的例子:

Sub Macro1() ' ' Macro1 Macro ' ' Sheets("Sheet1").Select Sheets("Sheet1").Name = "My Sheet" Sheets.Add After:=Sheets(Sheets.Count) Sheets("Sheet5").Select Sheets("Sheet5").Name = "My Sheet 2" End Sub 

您可以logging非常复杂的操作,并操作生成的代码并将其放在特定事件的后面。 所以如果你想让代码在工作表加载或激活工作表的时候触发,你可以把它插入到相关的代码块中

 'in Sheet1 - code behind (alt+F11 shortcut) Private Sub Worksheet_Activate() Sheets("Sheet1").Select Sheets("Sheet1").Name = "My Sheet" Sheets.Add After:=Sheets(Sheets.Count) Sheets("Sheet5").Select Sheets("Sheet5").Name = "My Sheet 2" End Sub 

HTH

另一种方法是使用间接公式。

假设你在单元格A1中有要查找的工作表的名称input,那么以下将从该工作表中查找单元格B7的值:

 =INDIRECT($A$1,"!B7")