-
自动生成工作表目录(批量生成超链接)
作者: 许泽博 发布: 2016/5/7 分类: 电脑 阅读: 次 查看评论
-
背景:一个工作簿,N个工作表,需要按照每个工作表的名称自动生成目录,并有超链接。
实现方法非常之简单,一公式即定。实现步骤一、定义名称CTRL+F3 - 新建名称名称:AllShs范围:工作簿引用位置:=REPLACE(GET.WORKBOOK(1),1,FIND("]",GET.WORKBOOK(1)),)&T(NOW())GET.WORKBOOK(1)是宏表函数,以[Book1.xls]Sheet1的形式返回工作簿中所有工作表名的水平数组;REPLACE(GET.WORKBOOK(1),1,FIND…是为了去掉前面的工作簿名,只保留工作表名;T(NOW())="" 不影响公式结果,而NOW是易失性函数,可以使工作表改名或增加、删除、移动工作表时,公式能自动重新计算。二、输入公式=IF(ROW()>COUNTA(AllShs),"",HYPERLINK("#"&INDEX(AllShs,ROW())&"!A1","GoTo "&INDEX(AllShs,ROW())&"!A1"))在任意单元格输入以上公式,下拉。公式的中文解析 - 判断行号大于工作表数量则置空,不然,则运用HYPERLINK函数为工作表建立超链接。公式中AllShs为定义的名称,也是关建所在。三、宏代码(非原创)Sub mulu()On Error GoTo TuichuDim i As IntegerDim shtcount As IntegerDim SelectionCell As Rangeshtcount = Worksheets.CountIf shtcount = 0 Or shtcount = 1 Then Exit SubApplication.ScreenUpdating = FalseFor i = 1 To shtcountIf Sheets(i).Name = "目录" ThenSheets("目录").Move before:=Sheets(1)End IfNext iIf Sheets(1).Name <> "目录" Thenshtcount = shtcount + 1Sheets(1).SelectSheets.AddSheets(1).Name = "目录"End IfSheets("目录").SelectColumns("B:B").Delete Shift:=xlToLeftApplication.StatusBar = "正在生成目录…………请等待!"For i = 2 To shtcountActiveSheet.Hyperlinks.Add Anchor:=Worksheets("目录").Cells(i, 2), Address:="", SubAddress:= _"'" & Sheets(i).Name & "'!R1C1", TextToDisplay:=Sheets(i).NameNextSheets("目录").SelectColumns("B:B").AutoFitCells(1, 2) = "目录"Set SelectionCell = Worksheets("目录").Range("B1")With SelectionCell.HorizontalAlignment = xlDistributed.VerticalAlignment = xlCenter.AddIndent = True.Font.Bold = True.Interior.ColorIndex = 34End WithApplication.StatusBar = FalseApplication.ScreenUpdating = TrueTuichu:End Sub注意:TextToDisplay:=Sheets(i).Name可以更改为TextToDisplay:=”go to “Sheets(i).Name显示为:go to 工作表标签文章来源EXCELHOME
评论列表: