这个函数真强大,居然能列示文件夹下的所有文件名

如何在Excel工作表中列出某个文件夹下的所有文件名称呢?本文介绍两种方法 。
第一种方法使用浏览器,操作非常简单,不需要使用函数 , 缺点是不能自动更新 。
第二种方法使用Files函数,用法并不复杂 。当文件夹中的文件增加或减少时 , 可以更新文件名称 。当文件夹内有多种类型的文件时 , 可以只列出特定类型的文件 , 比如只列出Excel文件 。此外,还可以创建对文件的超链接,单击超链接,即可打开对应的文件 。


1
方法一:使用浏览器


【这个函数真强大,居然能列示文件夹下的所有文件名】如下图所示 , 要求在工作表中列出“示例”文件夹中的所有文件 。

这个函数真强大,居然能列示文件夹下的所有文件名



(1)复制路径“E:示例”,打开浏览器,将复制的路径粘贴到地址栏,按键,如下图所示
这个函数真强大,居然能列示文件夹下的所有文件名



(2)按全选浏览器中列出的文件名称,然后复制粘贴到工作表中 。
这种方法操作非常简单,不需要使用函数,缺点是不能自动更新 。粘贴到工作表中的文件名称虽然看上去是一个超链接,不过单击并不能打开相应的文件 。
这个函数真强大,居然能列示文件夹下的所有文件名



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)当文件夹中新增文件时 , 双击任意一个单元格或按键,提取的文件名称会更新 。
这个函数真强大,居然能列示文件夹下的所有文件名



(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函数提取的文件名 。

相关经验推荐