如何提取出最后一个斜杠(\)之前的内容?

你好,我是刘卓。欢迎来到我的公号,excel函数解析。今天要分享的内容是如何提取出最后一个斜杠之前的内容,这类型的题很多小伙伴也会经常遇到。

下图A列是一些包含路径的文件名,现在要提取出最后一个斜杠前面的内容,结果如B列所示。也就是提取出路径。
解决这个问题的思路也挺多的,下面来一一说明。
第1种,vlookup通配符查找法
在B3单元格输入下面的公式,按ctrl+shift+enter。

=VLOOKUP("*\",LEFT(A3,99-ROW($1:$98)),1,)

99-ROW($1:$98)这部分得到了倒序的自然序列数,结果为{98;97;96;···;3;2;1}。也就是从98一直倒数到1。
LEFT(A3,99-ROW($1:$98))这部分用left从A3中分别提取98,97,96,···,3,2,1个字符。得到一个数组,结果如下图所示,提取出的长度逐渐减小。我这里截图没有截完,你可以按F9查看完整的结果。
VLOOKUP("*\",LEFT(A3,99-ROW($1:$98)),1,)这部分用vlookup在上面的字符串数组中查找以斜杠结尾的字符串,那就找到了上图标红色的那个字符串,并返回它的结果。
第2种,left+lookup+find
在A3单元格输入下面的公式,不用按三键。

=LEFT(A3,-LOOKUP(,-FIND("\",A3,ROW($1:$99))))

这个公式的思路是找到最后一个斜杠的位置,然后用left从左边提取出对应的长度。

FIND("\",A3,ROW($1:$99))这部分用find在A3中分别从第1,2,3,···,97,98,99个字符开始查找斜杠的位置。返回的结果为{3;3;3;9;9;9;9;9;9;23;23;23;23;23;23;23;23;23;23;23;23;23;23;#VALUE!;···;#VALUE!}。

其中最后一个数字23就是最后一个斜杠的位置,所以我们要把最后一个数字23提取出来。可以用LOOKUP(9^9,FIND("\",A3,ROW($1:$99)))这个公式。

但是为了省一个字符,可以改为这种写法-LOOKUP(,-FIND("\",A3,ROW($1:$99))),结果是一样的。最后用left从左边提取出23个字符就得到了我们要的结果。

第3种,left+match+mid

在A3单元格输入下面的公式,按ctrl+shift+enter。

=LEFT(A3,MATCH(1,0/(MID(A3,ROW($1:$99),1)="\")))

这个公式和第2种的思路一样,也是找到最后一个斜杠的位置,然后用left从左边提取出对应的长度。只不过现在用match来查找最后一个斜杠的位置。具体运算过程就不再说明了。

第4种,replace+lookup+find
在A3单元格输入下面的公式,不用按三键。

=REPLACE(A3,-LOOKUP(,-FIND("\",A3,ROW($1:$99)))+1,99,)

这个公式也是先找到最后一个斜杠的位置,然后把最后一个斜杠后面的内容替换掉,可以看作删除掉。

找最后一个斜杠的方法和第2种是一样的,用的是lookup和find。最后替换的时候用的是replace,replace是按指定位置替换。

替换的原始字符串是A3,替换的起始位置是最后一个斜杠的位置加1,替换的长度是99,最后替换的内容是空文本。简单来说就是把最后一个斜杠后面的内容替换为空。

第5种,substitute+rept+trim

在A3单元格输入下面的公式,向下填充。

=SUBSTITUTE(A3,TRIM(RIGHT(SUBSTITUTE(A3,"\",REPT(" ",99)),99)),)

这个公式不是数组公式,它的思路是先把最后一个斜杠后面的内容提取出来,然后用substitute将提取出来的内容替换为空,substitute是按指定内容替换。

substitute经常和rept、trim组合使用,也是常用的文本提取套路。之前说过好几次,就不再重复说明了。

第6种,substitute+mid+lookup+find

在A3单元格输入下面的公式,不用按三键。

=SUBSTITUTE(A3,MID(A3,-LOOKUP(,-FIND("\",A3,ROW($1:$99)))+1,99),)

这个公式和第5种的思路一样,不再重复说明。

第7种,substitute+rept+trim+len+left

在A3单元格输入下面的公式,向下填充。

=TRIM(LEFT(SUBSTITUTE(A3,"\",REPT(" ",99),LEN(A3)-LEN(SUBSTITUTE(A3,"\",))),99))&"\"

这个公式先用LEN(A3)-LEN(SUBSTITUTE(A3,"\",))算出A3中一共有3个斜杠;然后用substitute将第3个斜杠,也就是最后一个斜杠替换为99个空格,用REPT(" ",99)表示。
接下来用left从替换后的字符串中提取出99个字符,再用trim修剪掉多余的空格,最后再连接一个斜杠,完成。
链接:

https://pan.baidu.com/s/1K_yX_uMHHH39uR5rK9WiEA

提取码:bwhy
(0)

相关推荐