我在 Excel 中有一个包含文件和文件夹路径的列。例如 C:\1_Folder\2_Folder\3_Folder\my_file.txt
我想提取最终文件夹的名称并将其放在新列中。在此示例中为 3_Folder。
可以使用公式而不是 VBA 来实现吗?
编辑:嵌套文件夹的数量可以变化。
答案1
您可以使用 FIND 和 MID 文本函数。这将适用于可变数量的文件夹
路径文本C:\1_Folder\2_Folder\3_Folder\my_file.txt
查找倒数第二个斜线的位置(B1):FIND("|",SUBSTITUTE(A1,"\","|",LEN(A1)-LEN(SUBSTITUTE(A1,"\",""))-1))
查找最后一个斜线(C1)的位置:FIND("\",A1,B1+1)
获取倒数第二个斜杠和最后一个斜杠之间的字符:MID(A1,B1+1,(C1-B1)-1)
答案2
我用正则表达式插件对于这样的任务,使用正则表达式:
=RegExReplace(A1,".*\\([^\\]*)\\[^\\]*","$1")
- 这将提取最后一个文件夹之前的子字符串\
(实际上是您需要的最后一个文件夹)
答案3
这个答案是基于一个非常相似的问题。
如果您希望在一个公式中使用它,则可以使用:
=RIGHT(A6,LEN(A6)+1-FIND("@",SUBSTITUTE("\"&A6,"\","@",(LEN(A6)-LEN(SUBSTITUTE("\"&A6,"\",""))+1))))
... 它基本上通过删除所有反斜杠并比较长度来计算反斜杠的数量。它使用该数字将最后一个出现的反斜杠替换为“@”,然后返回并找到“@”的位置,并将其输入到正确的公式中以获取最后一个反斜杠后面的子字符串。添加了一个额外的反斜杠和一个“+1”来处理源中没有反斜杠的情况。如果没有反斜杠,则返回原始字符串。
如果您的数据已经包含“@”,那么您将需要选择不同的替换字符。