Excel公式:查找一单元格中某字符最后出现位置

您所在的位置:网站首页 excel怎么提取最后一个字符 Excel公式:查找一单元格中某字符最后出现位置

Excel公式:查找一单元格中某字符最后出现位置

2023-06-13 07:10| 来源: 网络整理| 查看: 265

这个需求简单来说,就是从右向左查找字符出现的首个位置,或从左向右查找字符出现的最后位置,例如:查找“普通人民代表大会发言人任免人选”中,最后一个“人”字的位置,直接的查找是做不到的。以下是各种公式:(以查找A1单元格中最后一个“@”为例)1.直线思路公式:=FIND("☆",SUBSTITUTE(A1, "@", "☆", LEN(A1)-LEN(SUBSTITUTE(A1, "@", ""))))解释:先通过替换删除法算出原字符串中有多少个“@”,例如n个,然后将第n个“@”替换成“☆”再查找“☆”的位置。2.行扩展拆分字符公式:=LOOKUP(1,0/(MID(A1,COLUMN(1:1),1)="@"),COLUMN(1:1))解释:column(1:1)会自动扩展成第一行的有限列数组(2003版上限256列,2010版上限16384列),然后公式就成了对A1的内容按每个字符拆分成数组,然后比对是否是“@”,是的话会返回逻辑值“True”,用零除运算后,“True”的项会变成“0”,其他变成“#DIV/0”,而对这些项组成的数组查找“1”将等同于查找最后一个“0”,然后给出对应的行号(位置)数字。缺点就是2003版的话字符长度限制大。3.列扩展拆分字符公式:=LOOKUP(1,0/(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)="@"),ROW(INDIRECT("1:"&LEN(A1))))解释:原理同上,只是将行变成列,而且是限制行数为A1内容长度,而行数上限比列数上限大多了。同样原理还有两种公式:=LOOKUP(LEN(A1),FIND("@",A1,ROW(INDIRECT("1:"&LEN(A1)))))原理同上,只是拆分数组的方式是从第n个字符开始查找“@”(小于n的位置值就被忽略),找到就返回位置值,然后对这些位置值组成的数组查找最接近A1内容长度的值,返回。类似公式,不过需要Ctrl-Shift-Enter三键输入:=MATCH(LEN(A1),FIND("@",A1,ROW(INDIRECT("1:"&LEN(A1))))) =MATCH(1,0/(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)="@"))4.还是列扩展拆分字符公式,需要Ctrl-Shift-Enter三键输入:=MAX(IF(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)="@",ROW(INDIRECT("1:"&LEN(A1)))))解释:原理还是同上,不同的是使用了max()。从上面两节的解释可以看到,其实要找也是找最大的位置值,所以可能大多数人一想就会想用Max(),但为什么不行呢——因为max()需要对比数值大小,从而不接受错误值,而lookup()、match()则只是字符匹配,可以略过错误值。为了使用max(),就要用if()来排除错误值项,公式就长了。要避开使用if(),那么可以使用类似sumproduct()风格的条件式(注意中间的 * 号),需要Ctrl-Shift-Enter三键输入:=MAX((MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)="@")*ROW(INDIRECT("1:"&LEN(A1))))5.极致最短公式:=-LOOKUP(,-FIND("@",A1,ROW(A:A)))解释:依然是列拆分字符公式,但是行数限制省去了,然后将查找到的位置值取相反数,使位置值全变【从大到小】的负数(强调一下,其绝对值就是【从小到大】),再从中查找最后一个位置值(略过错误值),再取一次相反数获得原来的位置值。这里要解释一下,为什么相反数了还是查找最后一个位置值?原理是这样的,lookup()是假定查找的序列(数组或向量)是升序排列的(不像vlookup和match那样可指定假定降序或假定乱序/精确查找),并在这样的假定下进行二分法查找(详情请看【深入理解LOOKUP:LOOKUP函数的查找原理】,返回小于等于目标值的项。因此,lookup()相当于是假定查找序列最大的值在最后,如果找不到和目标值相同的值,那么其返回的就是最后一个非错误值。6.另类思路公式,需要Ctrl-Shift-Enter三键输入:=TEXT(LEN(A1)-MATCH("@",LEFT(RIGHT("@"&A1,ROW($1:$99))),)+1,"[>];")



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3