如何在Excel工作表中列出某個文件夾下的所有文件名稱呢?本文介紹兩種方法。
第一種方法使用浏覽器,操作非常簡單,不需要使用函數,缺點是不能自動更新。
第二種方法使用Files函數,用法并不複雜。當文件夾中的文件增加或減少時,可以更新文件名稱。當文件夾内有多種類型的文件時,可以隻列出特定類型的文件,比如隻列出Excel文件。此外,還可以創建對文件的超鍊接,單擊超鍊接,即可打開對應的文件。
1
方法一:使用浏覽器
如下圖所示,要求在工作表中列出“示例”文件夾中的所有文件。
(1)複制路徑“E:\示例”,打開浏覽器,将複制的路徑粘貼到地址欄,按<Enter>鍵,如下圖所示
(2)按<Ctrl A>全選浏覽器中列出的文件名稱,然後複制粘貼到工作表中。
這種方法操作非常簡單,不需要使用函數,缺點是不能自動更新。粘貼到工作表中的文件名稱雖然看上去是一個超鍊接,不過單擊并不能打開相應的文件。
2
方法二:使用Files函數
Files函數是宏表函數,不能直接在單元格中使用,需要先定義名稱,然後才能在單元格中使用。
1、定義名稱
在B1單元格輸入文件路徑,注意最後的“*”不要省略。“*”是通配符,表示任意長度的字符。這樣可以提取“示例”文件夾中的所有文件名稱。
單擊【公式】-【定義名稱】,在【名稱】框中輸入名稱,本例為“myfiles”。【引用位置】處輸入公式:=FILES(方法二!$B$1)&T(NOW()),注意公式中的B1單元格必須使用絕對引用。
公式解析:
(1)FILES(方法二!$B$1)可以提取B1單元格指定文件夾下的所有文件名稱。但是當文件夾中的文件增加或減少時,Files函數不能自動更新結果,所以需要引入“&T(NOW())”。
(2)T函數用于檢測是否為文本,是文本,則原樣返回文本;不是文本,則返回空文本。Now()返回當前時間,在Excel中,時間的本質是數值。因此T(Now())返回空文本。由于Now()函數是易失性函數,當在單元格中輸入值或修改單元格時,可以強制Files函數自動重算,從而更新Files函數的計算結果。
當文件夾中的文件增加或減少時,單獨使用Files函數不能更新提取的文件名稱。但是Files函數搭配T(Now())使用,則可以實現自動更新提取的文件名稱。
2、提取文件名
B3單元格輸入公式:=INDEX(myfiles,ROW(A1))
向下複制公式至B10單元格。
公式解析:
(1)Files函數返回的是一個包含所有文件名稱的水平數組。因此使用Index函數依次提取每個文件名稱。
(2)當已列出所有文件名稱時,函數返回錯誤值。可以使用IFERROR函數屏蔽錯誤值。B3單元格輸入公式:=IFERROR(INDEX(myfiles,ROW(A1)),"")。
當所有文件名都已列出後,返回空文本。
(3)當文件夾中新增文件時,雙擊任意一個單元格或按<F9>鍵,提取的文件名稱會更新。
(4)如果隻需要提取某種類型的文件,比如Excel文件,可以将B1單元格數據修改為:E:\示例\*.xls*,表示隻提取擴展名為“xls*”的文件名稱,也就是Excel文件。
(5)如果希望創建指向文件的超鍊接,可以搭配hyperlink函數使用。
B3單元格輸入公式:
=HYPERLINK(LEFT($B$1,LEN($B$1)-1)&IFERROR(INDEX(myfiles,ROW(A1)),""),IFERROR(INDEX(myfiles,ROW(A1)),""))
Hyperlink函數的語法為hyperlink(link_location,[Friendly_name])。link_location指鍊接文件存放位置,先使用LEFT函數從B1單元格提取文件存放路徑,然後和Index函數提取的文件名連接。
friendly_name表示鍊接顯示的文本,本例中顯示的文本是使用Index函數提取的文件名。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!