Excel: 提取路径中的文件名

2022-09-20 14:20:47 浏览数 (1)

文章背景:在日常工作中,有时需要从绝对路径中提取文件名。比如,已知某个文件的存储路径,想要获取最后的文件名称。下面介绍两种方法。

(1) Excel函数法

代码语言:javascript复制
TRIM(RIGHT(SUBSTITUTE(A1,"",REPT(" ",99)),99))
  • REPT(text, number_times) 将文本重复一定次数。 A2的公式中,REPT函数将空格复制99次。
  • SUBSTITUTE(text, old_text, new_text, [instance_num]) 在文本字符串中用 new_text 替换 old_text。 A2的公式中,SUBSTITUTE函数将字符串中的斜杆替换成99个空格。
  • Right (string, length) 返回一个 Variant (String) 值,其中包含从字符串右侧算起指定数量的字符。
  • TRIM(text) 除了单词之间的单个空格之外,移除文本中的所有空格。

思路分析:针对文件路径,先用99个空格替换掉路径中的斜杆;再从字符串右侧起,获取99个字符(新字符串),此时,新字符串内既有文件名,也有空格;最后,通过trim函数,移除首尾的空格,从而得到所需要的文件名。

(2) VBA法(创建自定义函数)

代码语言:javascript复制
Option Explicit

Function getFileName(path As String, Optional sep As String = "") As String

    Dim arrSplitStrings() As String
    Dim num As Integer
    
    arrSplitStrings = Split(path, sep)
    
    num = UBound(arrSplitStrings)
    
    getFileName = arrSplitStrings(num)
    
End Function
  • Split(expression, [ delimiter, [ limit, [ compare ]]]) Returns a zero-based, one-dimensional array containing a specified number of substrings.
  • UBound(arrayname, [ dimension ]) Returns a Long data type containing the largest available subscript for the indicated dimension of an array.

思路分析:针对文件路径,使用Split函数,基于斜杆/,将路径分割成各个小块,保存在一个数组内;然后通过Ubound函数,获取数组的最后一个索引号,从而将文件名提取出来。

参考资料:

[1] 如何用excel提取路径中最后一个文件夹的名字(https://jingyan.baidu.com/article/a948d651aae9544a2ccd2e74.html)

[2] 字符串-如何从路径提取文件名(https://www.itranslater.com/qa/details/2582413335018865664)

[3] REPT 函数(https://support.microsoft.com/zh-cn/office/rept-函数-04c4d778-e712-43b4-9c15-d656582bb061)

[4] Right 函数(https://support.microsoft.com/zh-cn/office/right-函数-c02a18a8-b224-437e-aaba-1b785c6c61bf)

[5] Split function(https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/split-function)

[6] UBound function(https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/ubound-function)

0 人点赞