我們在工作中常用到一系列報告。它們有一個特點,這個特點就是報告里用到很多數(shù)據(jù)。這時候我們就遇見一種苦惱。如果用PPT呢,又是純展示的工具,如果用word,它又是純文字處理的工具。
而我想要得到一定的文本和數(shù)字混合呈現(xiàn)技術(shù)。那么Excel不失成為你的一種選擇。
需求
我在每個Sheet里面有各自的主題。例如您在做IATF內(nèi)審時候需要統(tǒng)計各自區(qū)域的得分。
我想要知道總體目錄是什么樣,每個部分的篇幅是多少。
能否賦予一個超鏈接快速訪問的實現(xiàn),這些都是現(xiàn)實需求。
更新的內(nèi)容,能否在目錄里面相應的更新。
實現(xiàn)
在視圖模式里是有分頁預覽按鈕的,它可以快速區(qū)分整個Sheet用了多少頁。這也是我們目錄的制作要素之一。
以2/10我的文章素材作為案例。我共有五個頁面。我需要新建一個Sheet,并統(tǒng)計他們各自用了多少頁。然后再建立超鏈接。
實現(xiàn)代碼
Option Explicit
Sub Create_TOC()
Dim wbBook As Workbook
Dim wsActive As Worksheet
Dim wsSheet As Worksheet
Dim lnRow As Long
Dim lnPages As Long
Dim lnCount As Long
Set wbBook = ActiveWorkbook
With Application
.DisplayAlerts = False
.ScreenUpdating = False
End With
On Error Resume Next
With wbBook
.Worksheets('TOC').Delete
.Worksheets.Add Before:=.Worksheets(1)
End With
On Error GoTo 0
Set wsActive = wbBook.ActiveSheet
With wsActive
.Name = 'TOC'
With .Range('A1:B1')
.Value = VBA.Array('Table of Contents', 'Sheet # - # of Pages')
.Font.Bold = True
End With
End With
lnRow = 2
lnCount = 1
For Each wsSheet In wbBook.Worksheets
If wsSheet.Name <> wsActive.Name Then
wsSheet.Activate
With wsActive
.Hyperlinks.Add .Cells(lnRow, 1), '', _
SubAddress:=''' & wsSheet.Name & ''!A1', _
TextToDisplay:=wsSheet.Name
lnPages = wsSheet.PageSetup.Pages().Count
.Cells(lnRow, 2).Value = ''' & lnCount & '-' & lnPages
End With
lnRow = lnRow 1
lnCount = lnCount 1
End If
Next wsSheet
wsActive.Activate
wsActive.Columns('A:B').EntireColumn.AutoFit
With Application
.DisplayAlerts = True
.ScreenUpdating = True
End With
End Sub
運行視頻: