在Excel中从文件路径中隔离字符串
在Excel中从文件路径中隔离字符串
假设我在A列中有4行(标题为文件路径),其内容如下:
A1:/page1/page2/page3
A2:/page4/page5
A3:/page6/page7/page8/page9
A4:/page10
...我需要一个公式来将最后一个子文件夹的上级文件夹隔离出来,放在对应的B列中(标题为上级文件夹),所以:
B1应该得到值page2
B2应该得到值page4
B3应该得到值page8
B4应该得到值[空白],因为它没有上级文件夹
请问有人可以建议一个可以实现这个目标的公式吗?
谢谢
我尝试了以下公式:
=IF(LEN(A1) = LEN(SUBSTITUTE(A1,"/","")),"",MID(A1,FIND(REPT("/",LEN(A1)-LEN(SUBSTITUTE(A1,"/",""))-1),LEN(A1)))
和
=LET(v,A1,INDEX(TEXTSPLIT(v,"/"),LEN(v)-LEN(SUBSTITUTE(v,"/",""))))
还有
Get parent folder path from file path using cell formula(可以将子文件夹上方的整个文件路径隔离出来)
但无法隔离上级文件夹。
在Excel中从文件路径中分离字符串的问题是由以下内容引起的。使用以下公式可以解决这个问题。
对于单个单元格尝试:
公式在B1中:=(TEXTSPLIT(A1,“/”),-2)
对于整个范围:
公式在B1中:=TEXTAFTER(“/”&TEXTBEFORE(A1:A4,“/”,-1),“/”,-1)
对于较旧版本的Excel,我想链接到关于使用FILTERXML()而不是MID(),LEFT(),RIGHT()等混合的问题的这个问题。公式如下:
=IFERROR(FILTERXML(""&SUBSTITUTE(A1,"/","")&"
如果你使用的是2013年之前的Excel版本和/或Mac,则你可能希望比你自己的答案更动态一些:
=TRIM(LEFT(RIGHT(SUBSTITUTE(A1,"/",REPT(" ",LEN(A1))),LEN(A1)*2),LEN(A1)))
所有的公式现在都已经链接了,这非常有帮助。
在你的TAKE/TEXTSPLIT解决方案中的“@”是为了解决TEXTSPLIT会溢出2D的情况吗?
.b 是的,没错。
哦,我明白它是怎么做的了。它会将最后2列的结果溢出,而不使用它。非常聪明和干净的解决方案。
.b,这被称为隐式交集。添加“@”将返回数组的左上角元素。要么这样,要么使用更冗长的TAKE()。
我知道它的工作方式,但我习惯于在范围中使用它,所以它返回第一个元素。基本上它确实做到了这一点,但在另一个上下文中。