在Excel表格插入工作表目錄,是一個老生常談的技巧。但大數多用戶只會套用,并不懂其中的原理,畢竟制作過程太過復雜。所以,離開了教程也做不出來了。
為了讓大家可以隨時隨地做自已做目錄,今天蘭色就剖析一下制作Excel目錄的過程。
制作過程:
1、公式 - 定義名稱:shname
=MID(GET.WORKBOOK(1),FIND("]",GET.WORKBOOK(1))+1,99)&T(NOW)
乖乖,好多陌生的函數....新手看了這個公式估計要暈掉。別急,蘭色一步步幫大家分析。
在Excel中有一類函數叫 宏表函數,功能非常強大,可以提取Excel或電腦的信息,比如提取單元格顏色,提取文件目錄。今天要用到的是一個可以提取所有工作表名稱的函數: Get.Workbook
由于宏表函數只能在定義名稱中使用,所以必須先定義名稱:
公式 - 定義名稱 - 輸入 自定義的名稱 - 在引用位置輸入公式:
=get.workbook(1)
注: get.workbook的參數是 1時,可以提取所有工作表名稱
定義的名稱可以在單元格公式中直接使用,比如輸入=Shname即可返回所有工作表名稱。( 選中公式按F9可以查看所有值)
由于返回的工作表名稱前含工作簿名稱“ [抖音Excel技巧集.xlsm]”,所以下一步把用函數它刪除:
用 Find函數查找"]'的位置,然后用 MID函數截取。
=MID(GET.WORKBOOK(1),FIND("]",GET.WORKBOOK(1))+1,99)
怎么把工作表名稱顯示到一列中?
可以用 Index函數+ row函數提取:index可以根據位置提取數據,Row函數可以在向下復制時生成1,2,3,4...序數
=INDEX(shname,ROW(A1))
名稱有了,下一步是給工作表名稱添加鏈接,這一步要用
=Hyperlink(#工作表名稱!單元格地址,工作表名稱)
即:
=HYPERLINK("#"&INDEX(shname,ROW(A1))&"!a1",INDEX(shname,ROW(A1)))
當公式超出工作表個數時,再復制公式會返回錯誤值,所以需要再外套 IFerror函數。
=IFERROR(HYPERLINK("#"&INDEX(shname,ROW(A1))&"!a1",INDEX(shname,ROW(A1))),"")
好像很完美了? No...當你修改、刪除工作表時,目錄并不會自動更新:
問題出在哪?原來我們在定義名稱時少了兩個函數: T和 Now
- Now 函數可以生成自動更新的時間,可以讓公式強制刷新
- T 函數則可以把數字(時間也是數字)轉換為空白
所以 T(Now)即可以讓公式強制刷新( 雙擊或其他單元格內容更新),又不影響單元格的值。
接下來修改定義的名稱:
至此,目錄的公式設置完成。無論添加、刪除工作表或修改工作表名稱,雙擊任一個單元格或任一單元格內容發生修改,目錄都會自動更新。
完成了嗎?No! 我們還少最后一步,把工作簿另存為啟用宏的工作簿。
蘭色說:盤點了一下,制作目錄共用了兩大類9個函數,對新手真的有點難度,所以要想隨時隨地制作目錄,你還真的需要理解這些函數的用法。