• 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帮助里没有找到相关说明)

     声明:本文是本人查阅网上及书籍等各种资料,再加上自己的实际测试总结而来,仅供学习交流用,请勿使用于商业用途,任何由此产生的法律版权问题概不负责,谢谢。

  • 相关阅读:
    iOS"Request failed: unacceptable content-type: text/html"
    简单的block
    NSDate管理日期和时间
    归并排序
    Java对数器的使用
    SpringBoot接入支付宝教程
    Servlet中转发和重定向的区别和使用(转载)
    关于获取本机IP地址的几种方法
    Servlet中过滤器:放行指定IP
    Echarts基础学习
  • 原文地址:https://www.cnblogs.com/feiyu721/p/11310041.html
Copyright © 2020-2023  润新知