有没有一种有效的方法来使用基本函数识别字符串中最后一个字符/字符串匹配?即不是字符串的最后一个字符/字符串,而是字符/字符串的最后出现位置在字符串中的位置。搜索和查找都是从左到右工作的,因此我无法想出如何应用它们而不需要冗长的递归算法。而且这个解决方案现在似乎已经过时。这个解决方案
有没有一种有效的方法来使用基本函数识别字符串中最后一个字符/字符串匹配?即不是字符串的最后一个字符/字符串,而是字符/字符串的最后出现位置在字符串中的位置。搜索和查找都是从左到右工作的,因此我无法想出如何应用它们而不需要冗长的递归算法。而且这个解决方案现在似乎已经过时。这个解决方案
Function LastSegment(S, C)
LastSegment = Right(S, Len(S) - InStrRev(S, C))
End Function
然后是单元格公式
=lastsegment(B1,"/")
在一个单元格中,要搜索的字符串在B1单元格中,将填充从B1单元格中最后一个“/”之后的文本。
没有长度限制,没有晦涩的公式。
唯一的缺点是需要启用宏的工作簿。
任何用户VBA函数都可以通过这种方式调用,以返回一个值到单元格公式,包括作为内置Excel函数的参数。
如果您要大量使用该函数,您需要检查字符不在字符串中的情况,然后字符串为空等情况。
YourText = "c:\excel\text.txt"
xString = Mid(YourText, 2 + Len(YourText) - InStr(StrReverse(YourText), "\" ))
如果你只是想找到字符“~”最后一次出现的位置,那么=len(substitute(String,"~",""))+1
我相信有一种版本可以用于查找字符串的最后一个实例,但我得回去工作了。
单元格 A1 = 找到最后一个斜杠的位置
一个简单的方法是将文本反转,然后像正常情况下查找第一个斜杠一样查找。现在,您可以获取完整文本长度减去这个数字。
就像这样:
=LEN(A1)-FIND("/",REVERSETEXT(A1),1)+1
这将返回21,即最后一个/的位置
REVERSETEXT
不是标准的 Excel 公式。 - d219
search
和find
都是查询字符串内容的术语,“match”是一个标准术语,加上链接的示例。 - geotheory