2009-02-22 99 views
0

我有被用于指定我们的Unix文件系统的队伍建设信息的Excel电子表格。如何动态更新Excel中工作表的名称?

此工作必须根据系统的不同的信息来建立。例如,一个生产系统会有很多文件系统,而开发系统只有一两个。

因此,基于用户的输入,我们会填充一个或其它的两个输入工作表格式(“开发”,“刺”),但目标工作表将永远是相同的。只有一个dev或prod工作表可以在任何给定的时间显示和激活以供用户输入数据。

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

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

回答

1

有取决于纸张的复杂性几个方面:

  • 如果只有几个工作表,并且用户将只需选择“生产”或“测试”,您可以设置条件逻辑在公式中。例如:= if(A1 =“Test”,TestSheet!A1 + TestSheet!A2,ProdSheet!A1 + ProdSheet!A2)
  • 您可以使用与上述相同类型的想法,但使用vlookup表添加更多复杂性
  • VBA程序可以创建整个Excel电子表格动态地根据用户输入
1

如果你能使用VBA代码LuckyLindy建议,你可以做很多事情。我以前做的各种操作记录的宏,例如添加或重命名表,并采取生成的代码,并适应它究竟需要做些什么。

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

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 

您可以记录很复杂的操作和操作生成的代码,并将其放在特定的事件背后。所以,如果你想要的代码火在一张纸的工作负载或激活,就可以在相关的块插入:即

'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

0

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

假设你有在单元格A1的工作表的名称,你想从,那么下面将查找单元格B7的值从表中查找输入:

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