2016-01-06 91 views
2

在Excel 2010中,我有一個工作簿,其中有一列標識工作簿中每個工作表的名稱。以下公式用於此:=INDEX(SheetList,ROW())其中SheetList是對以下公式的命名引用:=REPLACE(GET.WORKBOOK(1),1,FIND("]",GET.WORKBOOK(1))," ")當工作表名稱被更改或刪除時,爲什麼我的工作表工作表名稱列表不會更新?

當添加新工作表時更新列表,但在工作表名稱被更改或工作表被刪除時不更新。我發現更新列表的唯一方法是將公式複製並粘貼回列中的所有單元格中。任何有關爲什麼它不會自動更新的想法,可以做些什麼來使其自動更新,或者是一個熱鍵命令來使公式更新?

回答

1

如果可以合理地假設「列表」以C2開始並從那裏填充,然後右鍵單擊工作表的名稱選項卡並選擇查看代碼。當VBE打開時,將以下內容粘貼到標題爲Book1 - Sheet1(Code)的代碼表中。

Private Sub Worksheet_Activate() 
    Range(Cells(2, 3), Cells(Rows.Count, 3).End(xlUp)).FillDown 
End Sub 

當你返回到(又名激活)包含的工作表列表中的工作表,該列表將被更新。

1
  • 要使用熱鍵命令計算的話:CTRL + ALT + SHIFT + F9

  • 爲了使自動更新,我們可以給它添加一個可變函數返回空線如TODAY()

    =INDEX(SheetList,ROW())&IF(TODAY()=TODAY(),"")

這個工作對我來說和更新時自動刪除或重新命名錶,但不是(按F9 它更新)工作時,添加新的工作表。

+0

很好的使用volatile函數來實現正確的結果。 – Jeeped

+0

@Jeeped,謝謝,我很高興聽到你的消息。 – Fadi

相關問題