EXCEL查某个字符在字符串中最后⼀次出现的位置
在EXCEL⽂档⾥想从很长的⽂件路径中取得⽂件名,【数据】→【分列】是个不错的选择,但⽤函数会显得更⾼⼤上⼀些。
⾸先,需要获取最后⼀个"\"所在的位置。
⽅法1:
FIND("@",SUBSTITUTE(A1(字符串所在单元格),"\","@",LEN(A1)-LEN(SUBSTITUTE(A1,"\",""))))字符串截取从某个字符到最后一位
这个⽐较好理解,只要理解了SUBSTITUTE第四个参数的作⽤就好。
SUBSTITUTE第四个参数:可选。指定要⽤ new_text 替换 old_text 的事件。如果指定了 instance_num,则只有满⾜要求的 old_text 被替换。否则,⽂本中出现的所有 old_text 都会更改为 new_text。
例:
所以,整个函数的意思是把字符串中最后⼀个"\"替换成字符串中没出现过的其他字符(如“@”),然后在查这个没出现过的字符所在的位置就可以了。
⽅法2:
LOOKUP(1,0/(MID(A1(字符串所在单元格),COLUMN(1:1),1)="\"),COLUMN(1:1))
这个理解起来⽐较难。
先来理解COLUMN(1:1)的意思:
在空⽩EXCEL⽂档⾥选中第⼀⾏,在编辑栏⾥输⼊=COLUMN(1:1),再按Ctrl+Shift+Enter组合键
可以看到COLUMN(1:1)的结果是⼀个1~16384的数组。
再看(MID(A1(字符串所在单元格),COLUMN(1:1),1)="\"),作⽤是⼀个个取出字符串中的字符,并判断是否与"\"相同,相同则返回TRUE,否则返回FALSE。
0/TRUE得0,0/FALSE得
所以0/(MID(A1(字符串所在单元格),COLUMN(1:1),1)="\")的结果是
所以LOOKUP(1,0/(MID(A1(字符串所在单元格),COLUMN(1:1),1)="\"),COLUMN(1:1))的结果是
EXCEL帮助⾥的备注:
本例中的LOOKUP函数在0/(MID(A1(字符串所在单元格),COLUMN(1:1),1)="\")⾥是不到1的,所以它到的是0,但在0/(MID(A1(字符串所在单元格),COLUMN(1:1),1)="\")⾥有多个0,从结果来看,它到的是最后⼀个0。(为什么?在EXCEL帮助⾥没有到相关说明)
声明:本⽂是本⼈查阅⽹上及书籍等各种资料,再加上⾃⼰的实际测试总结⽽来,仅供学习交流⽤,请勿使⽤于商业⽤途,任何由此产⽣的法律版权问题概不负责,谢谢。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。