2009-02-22 101 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")