excel

关注公众号 jb51net

关闭
软件教程 > 办公软件 > excel >

不使用VBA! excel表格提取指定文件夹的所有文件名的技巧

脚本之家

假设有一个文件夹,其中包括有许多文件,而你想要在工作表中列出这些文件的名字,怎么办?当然,你可以一个一个地选择文件,复制其名字并粘贴到工作表中,但这种工作很枯燥且耗费时间。此时,你可能想到VBA,编写一段代码可以很快实现这个需求,如果不使用VBA呢?这就是本文要介绍的技巧。

首先,我们在要获取其文件名的文件夹中新建一个工作簿,在工作表单元格A1中输入文件夹完整的地址,并在末尾添加*号。本示例为桌面文件夹,单元格A1中代表文件夹的完整地址为:

C:\Users\excelperfect\Desktop\*

其实,可以使用一个公式来得到上面的文件夹路径,在单元格A1中输入公式:

=REPLACE(CELL("filename"),FIND("[",CELL("filename")),LEN(CELL("filename")),"*")

其结果如下图1所示。即为该工作簿所在文件夹的完整地址并在其后添加*号。

接下来,我们定义名称。

单击功能区“公式”选项卡“定义的名称”组中的“定义名称”,在弹出的“新建名称”对话框中定义一个名为“GetFileNames”的名称,如下图2所示。

现在,可以获取的在文件夹中的文件名列表了。

在单元格A3中,输入下面的公式:

=IFERROR(INDEX(GetFileNames,ROW()-2),"")

向下拖动复制直至列出该文件夹中的所有文件名称,如下图3所示。

可以看出,上面列出了文件夹中所有文件的名称。然而,如果我只想列出特定扩展名的文件名称,可以在文件扩展名中使用*号来实现,例如只想列出Excel文件,则文件夹的地址修改为:

C:\Users\excelperfect\Desktop\*xls*

结果如下图4所示。

最后,我们解释一下工作原理。

FILES函数获取指定文件夹中指定扩展名的所有文件的名称。在INDEX公式中,将获取的文件名数组作为其第一个参数,使用ROW函数返回的值获取第1个、第2个、第3个……文件名。注意,这里使用了ROW()-2,因为是从第三行开始的,因此,对于第三行,ROW()-2返回1,公式向下拖拉复制到第四行,其值返回2,以此类推。