0

我在 Excel 2010 中有大约 4000 条数据记录,如下所示:

QW3-WE-2232-322-A-2
WETE-33-3REE-33-WEWE-3
DEE-3YED-3432-DXSDDD-3FESE-2
343-34SE-34323-AWBE-3
ABDC-343-3THYT-2

我希望数据看起来像这样,其中最后一个破折号之后的所有内容都被删除。

QW3-WE-2232-322-A
WETE-33-3REE-33-WEWE
DEE-3YED-3432-DXSDDD-3FESE
343-34SE-34323-AWBE
ABDC-343-3THYT

想知道是否有一种简单的方法来执行此 Excel?

4

2 回答 2

3

回答最多出现两个“-”分隔符的原始问题:

=LEFT(A1,FIND("-",A1,FIND("-",A1)+1)-1)

回答出现任意数量的“-”分隔符的修改后的问题:

=LEFT(A1,FIND("|",SUBSTITUTE(A1,"-","|",LEN(A1)-LEN(SUBSTITUTE(A1,"-",""))))-1)

这个答案是通过如何在不使用 VBA 的情况下在 Excel 中执行反向字符串搜索?,其中也可以找到几个适应性强的选项。

这是非常聪明的,但是使用一点 VBA 可以设计出更直接的答案。执行此操作的 VBA 可能非常简单,但我建议引入正则表达式以获得更灵活的解决方案,您可以将其用于其他类似问题。

Function RegExReplace(pattern As String, sourceString As String, replaceVar As String) As String
    Dim RE As Object
    Set RE = CreateObject("vbscript.regexp")
    RE.pattern = pattern
    RE.Global = True
    RegExReplace = RE.Replace(sourceString, replaceVar)
End Function

然后在你的工作表中你会使用

=RegExReplace("-[^-]*$",A1,"")
于 2012-10-24T01:20:55.303 回答
0

在我看来,您只想摆脱字符串末尾的最后两个字符。如果是这样,那么您可以尝试=Left(A1,Len(A1)-2)

于 2012-10-24T14:46:58.217 回答