删除特定字符前的文本的更好方法

删除特定字符前的文本的更好方法

很多时候,我需要删除特定字符之前的所有文本。例如,在“原告诉被告”形式的法律案件列表中,我可能希望删除“诉”之前的所有内容,以获取被告列表。

FIND通过使用、RIGHT和函数的组合,可以轻松实现这一点,LEN如下所示(使用A1作为文本来源的单元格):

=RIGHT(A1,LEN(A1)-FIND("text",A1)-1)

但它总是给我一种笨重且容易出错的感觉(更不用说我经常忘记减 1。有没有更优雅的方法来实现相同的结果?

答案1

使用 VBA 是一种合法的策略!隐藏了这些细节以及回忆它们的负担。还允许您使用更简单的字符串函数(例如,VBA 版本的 Mid() 不需要子字符串计数 - 默认情况下它将提供到字符串的末尾。)[注 1]
您编写的函数可轻松应用于 Excel 函数的 Excel 下拉列表中。

Alt-F11 进入 VBA(Alt-F11 切换回)。
从当前工作簿的 VBAProject,插入 > 模块(右侧菜单操作)。这样,整个工作簿中都可以轻松访问该功能。

粘贴此:

函数 RightOfToken(sSource 作为字符串,sToken 作为字符串) 作为字符串
Dim sTa​​rget 作为字符串
Dim iPos 作为整数

' 返回 sSource 中第一次出现 sToken 后的字符

iPos = InStr(sSource,sToken)
如果 iPos > 0 则
    sTarget = Mid(sSource,Len(sToken) + iPos)
别的
    目标 = “”
万一
RightOfToken = sTarget
结束函数

Alt-F11 返回。在任何单元格中,=RightofToken("ABC v. DEF","v.") 将得出“DEF”。(您可以在 VBA 中使用 LTrim() 删除前导空格,或者如果合适,在 Excel 中执行 TRIM)

[注 1] 如果在 VBA 中您需要某个函数的 Excel 版本,或者特定于 Excel 的工作表函数,则可以在其前面加上 Application.WorksheetFunction。

答案2

查找和替换可能对你有用。这是最快的。对于你的示例“想要删除所有内容,包括“v.”以获取被告名单”,我会将信息复制到新列中,然后仅突出显示这些列。然后使用查找和替换或 CTRL H。

在查找框中输入“*v。”或“星号v. "。在替换框中,将其留空。(星号 * 是通配符,因此它将选择 V 之前的所有内容。)单击确定运行,它将删除“v. ”之前的所有内容。

如果您首先突出显示了所有想要更改的内容,那么您应该能够非常快速地完成所有操作。

希望这是有意义的。

相关内容