Excel:字符串中最后一个字符/字符串的匹配

223

有没有一种有效的方法来使用基本函数识别字符串中最后一个字符/字符串匹配?即不是字符串的最后一个字符/字符串,而是字符/字符串的最后出现位置在字符串中的位置。搜索和查找都是从左到右工作的,因此我无法想出如何应用它们而不需要冗长的递归算法。而且这个解决方案现在似乎已经过时。这个解决方案


3
因为我想要在字符串"one.two.three.four"中找到最后一个句点"."的位置。 - geotheory
6
有趣的是,对问题错误的理解却得到了点赞。 - geotheory
1
我认为应该从另一个角度来看待这个问题,这意味着其他人也没有理解你在问题中的意思,因此认为建议是正确的解决方案...即使你选择的答案也以“我想我明白你的意思”开始...这不是批评,而是请求努力使你的问题更容易理解,以帮助人们更轻松地回答。 - John Bustos
我本应该在问题中添加示例,但我认为已经有足够的内容可以区分这个问题与关于字符串最后一个字符的查询:searchfind都是查询字符串内容的术语,“match”是一个标准术语,加上链接的示例。 - geotheory
可能是重复的问题:如何从Excel列中提取最后一个子字符串? - Jean-François Corbett
稍微更新的跨站点重复问题:https://superuser.com/q/680769 - Mathieu K.
14个回答

0
很晚才来参加派对,但一个简单的解决方案是使用VBA创建自定义函数。
将该函数添加到工作簿、工作表或VBA模块中。
Function LastSegment(S, C)
    LastSegment = Right(S, Len(S) - InStrRev(S, C))
End Function

然后是单元格公式

=lastsegment(B1,"/")

在一个单元格中,要搜索的字符串在B1单元格中,将填充从B1单元格中最后一个“/”之后的文本。

没有长度限制,没有晦涩的公式。

唯一的缺点是需要启用宏的工作簿。

任何用户VBA函数都可以通过这种方式调用,以返回一个值到单元格公式,包括作为内置Excel函数的参数。

如果您要大量使用该函数,您需要检查字符不在字符串中的情况,然后字符串为空等情况。


0
在VBA中实现这个简单的方法是:
YourText = "c:\excel\text.txt"
xString = Mid(YourText, 2 + Len(YourText) - InStr(StrReverse(YourText), "\" ))

-1

如果你只是想找到字符“~”最后一次出现的位置,那么=len(substitute(String,"~",""))+1

我相信有一种版本可以用于查找字符串的最后一个实例,但我得回去工作了。


-2

单元格 A1 = 找到最后一个斜杠的位置

一个简单的方法是将文本反转,然后像正常情况下查找第一个斜杠一样查找。现在,您可以获取完整文本长度减去这个数字。

就像这样:

=LEN(A1)-FIND("/",REVERSETEXT(A1),1)+1

这将返回21,即最后一个/的位置


2
REVERSETEXT 不是标准的 Excel 公式。 - d219

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接