韓老師講office2020-03-26 21:26
韓老師曾經寫過一篇文章:
1、函數法:
需要“公式—名稱”處在新建名稱對話框中引用位置輸入公式:
=INDEX(GET.WORKBOOK(1),ROW(A1))&T(NOW())。再利用公式“=IFERROR(HYPERLINK(目錄&"!A1",MID(目錄,FIND("]",目錄)+1,99)),"")”生成目錄。
此方法可行,但公式稍難寫,一不注意就錯了。
2、非函數法:
利用“兼容性報表”生成目錄。這種方法雖沒有太複雜的公式,但不容易被想到,而且生成的目錄帶有單元格地址,看起來不像純正的目錄。
今天介紹VBA的方法,只用簡單的代碼即可生成目錄。
無超鏈接的目錄
在代碼窗口中輸入代碼:
<code>Sub 目錄()
For x = 2 To Sheets.Count
Cells(x, 1).Value = Sheets(x).Name
Next
End Sub/<code>
如下圖:
此段代碼應用了For-Next循環語句,讀取從第2個一直到最後一個工作表,然後將每個工作表的名稱依次寫入目錄工作中的第1列單元格。
插入一個按鈕,並指定宏,如下圖:
這種方法簡單,但是生成的目錄沒有超鏈接,不能鏈接到相應工作表,請看下面的方法,可以實現目錄與工作表之間的切換。
有超鏈接的目錄
在代碼窗口中輸入:
<code>Sub 目錄()
Application.ScreenUpdating = False '關閉屏幕更新
Dim i As Integer, sht As Worksheet, shtname As String
Columns(1).ClearContents '清除A列
Cells(1, 1) = "目錄" '“部門費用”工作表A1單元格添加數據“目錄”
i = 1
For Each sht In Worksheets
shtname = sht.Name
If shtname <> ActiveSheet.Name Then
i = i + 1
ActiveSheet.Hyperlinks.Add anchor:=Cells(i, 1), Address:="",
SubAddress:="'" & shtname & "'!a1", ScreenTip:="超鏈接到" & sht.Name & "工作表", TextToDisplay:=shtname
'在“部門費用”工作表A列中添加工作表名稱
With sht
sht.Hyperlinks.Add anchor:=sht.Cells(1, 10), Address:="", SubAddress:="部門費用!a" & i, ScreenTip:="返回目錄", TextToDisplay:="返回目錄"
'在每一個不是“部門費用”的工作表JI單元格的中添加“返回目錄”按鈕
End With
End If
Next
Application.ScreenUpdating = True '開啟屏幕更新
End Sub/<code>
部分語句太長,直接把代碼複製過來觀感不好,大家可以把手機橫過來,可讀性增加一些。
但如果不把代碼放在這裡,只截圖,大家又沒辦法複製。
看代碼截圖:
效果如下:
大家可以根據自己處理數據的實際需求選擇合適代碼建議目錄。
閱讀更多 韓老師講office 的文章