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