【问题标题】:FIND in reverse (from right to left, FINDrev) function Excel UDF反向查找(从右到左,FINDrev)函数 Excel UDF
【发布时间】:2019-10-26 07:40:29
【问题描述】:

我花了很长时间在 Excel 中搜索一个简单的 FIND-in-reverse 函数,发现一些公式对我来说太长了(例如How can I perform a reverse string search in Excel without using VBA?)。

所以我最终创建了自己的更简单的,如下所示,它通过查找最后一个空格(或从右到左的第一个空格)的位置为您提供字符串中的最后一个单词。

=RIGHT(A1,FINDrev(” “,A1))

如果你在上面的句子上运行这个公式(放在单元格 A1 中),它会给你结果“左”。您只需定义一个 3 行 VBA UDF FINDrev() 并将其保存在永久可用的 xlam 插件中:

Public Function FINDrev(Find_text As String, Within_text As String)
FINDrev = Len(Within_text)-Len(Find_text)-InStrRev(Within_text, Find_text)+1
End Function

有没有人找到更简单的 FIND-in-reverse 解决方案?

【问题讨论】:

  • 肯定有一些选项可以这样做,但工作表 Instrrev 会很好。不过,使用 MID 和 Instrrev 可以使您的功能更简单
  • 顺便说一句,另一种选择是使用拆分

标签: excel find user-defined-functions right-to-left string-search


【解决方案1】:

你可以试试VBA内置函数InStrRev()

您可以在这里找到文档,https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/instrrev-function

我会做一个这样的UDF。

Function myRightRev(find_text As String, Within_text As String) As String
    myRightRev = Mid(Within_text, InStrRev(Within_text, find_text) + 1)
End Function

【讨论】:

  • 是的,谢谢,如果 find_text 的长度只有 1 个字符,MID 就可以工作(公式中有一个小错字,最后应该是“+ 1)”。如果您寻找更长的时间,例如"\\",末尾的+1需要替换为LEN(Find_text)
  • @Vasko 谢谢。这是我的错字。
猜你喜欢
  • 1970-01-01
  • 2012-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多