当工作表名称被更改或删除时,为什么我的工作表工作表名称列表不会更新?

在Excel 2010中,我有一个工作簿,其中包含一个标识工作簿中每个工作表名称的列。 下面的公式用于: =INDEX(SheetList,ROW())其中SheetList是对以下公式的命名引用: =REPLACE(GET.WORKBOOK(1),1,FIND("]",GET.WORKBOOK(1))," ")

添加新工作表时更新列表,但更改工作表名称或删除工作表时不更新。 我发现更新列表的唯一方法是将公式复制并粘贴到列的所有单元格中。 任何想法,为什么它不会自动更新,可以做些什么来使其自动更新,或者可能是一个热键命令,使公式更新?

如果可以合理地假设“列表”以C2开头并从那里填充,则右键单击工作表的名称选项卡并select“ 查看代码” 。 当VBE打开时,将以下内容粘贴到标题为Book1 – Sheet1(Code)的代码表中。

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

无论何时返回(又名激活 )包含工作表列表的工作表,该列表将被更新。

  • 要使用热键命令来计算它: CTRL + ALT + SHIFT + F9

  • 为了使其自动更新,我们可以添加一个返回空string如TODAY()的Volatile函数:

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

这为我工作,并自动更新时删除或重命名工作表,但不工作时添加新工作表(但通过按F9更新)。