当前位置: 首页 > 知识库问答 >
问题:

在VBA中,如何删除文本字符串末尾以数字开头的内容?

金瑞
2023-03-14

所以目前我的VBA代码如下所示:

Sub Testing()

Dim K As Long
Dim LR As Long
LR = Cells(Rows.Count, 1).End(xlUp).Row


For K = 2 To LR
   Cells(K, 2).Value = StripAfter(Cells(K, 1), "_", 6)
Next K

End Sub


Function StripAfter(ByVal txt As String, ByVal delimiter As String, ByVal 
  occurrence As Long) As String
    Dim x As Variant
    x = Split(expression:=txt, delimiter:=delimiter, limit:=occurrence + 1)

    StripAfter = x(UBound(x))
End Function

有了这个输出,这正是公式所要做的,这是很棒的!我的问题是,对于B列中的结果,我不能全神贯注于此(我是VBA宏的新手,试图尽可能地学习),它们都以数字结尾,数字之间有X。我将如何调整我的代码,使其删除该部分文本?所以结果看起来像:

正如您从我要查找的结果中可以看到的,与给出的结果相比,###x##在末尾被删除。我在VBA之外玩了一圈,发现这是可行的,但它本质上是一个两步过程

=RIGHT(SUBSTITUTE(A1,"_",CHAR(10),12),LEN(A1)-FIND(CHAR(10),SUBSTITUTE(A1,"_",CHAR(10),12),1)+1)
=LEFT(A20,MIN(FIND({0,1,2,3,4,5,6,7,8,9},A20&"0123456789")) -1)

共有1个答案

郑高驰
2023-03-14

我也很难处理这样的公式,所以我使用了正则表达式,在函数中添加了几行。基本上是模式匹配。你的潜艇和以前一样。

Function StripAfter(ByVal txt As String, ByVal delimiter As String, ByVal occurrence As Long) As String

Dim x As Variant

x = Split(expression:=txt, delimiter:=delimiter, limit:=occurrence + 1)
StripAfter = x(UBound(x))

With CreateObject("VBScript.RegExp")
    .Global = True
    .Pattern = "\d+x\d+$"                                           'match 1+ numbers followed by x followed by 1+ numbers at the end of a string
    If .Test(StripAfter) Then StripAfter = .Replace(StripAfter, "") 'if pattern found replace with empty string
End With

End Function
 类似资料:
  • 问题内容: 我有以下代码: 我期望: 我有: 现在我做 有没有更好的办法? 问题答案: 并不意味着“删除此子字符串”。视为一组字符,并从的两端去除该组中的所有字符。 在 Python 3.9及更高版本上, 您可以使用和方法从字符串的任一侧删除整个子字符串: 相关的Python增强建议是PEP-616。 在 Python 3.8及更早版本上, 您可以使用和切片: 或正则表达式:

  • 问题内容: 我有一串琴弦,其中一些琴弦。我只想删除最后四个字符。 换句话说,我有 我希望它成为 Python处理此问题的方法是什么? 问题答案:

  • 问题内容: 我想删除字符串末尾的逗号。由于现在我正在使用 但这只会删除字符串的最后一个字符。我正在动态添加字符串,因此有时字符串末尾没有逗号。如果字符串末尾有逗号,如何使PHP从字符串末尾除去逗号? 问题答案: 此处的文档

  • 问题内容: 我有一个字符串,我想仅使用Java从字符串的结尾删除行尾字符 我想成为 (此问题类似于但与问题593671不同) 问题答案: 您可以使用。这修剪和字符在字符串的结尾 正则表达式的解释如下: 是包含和的字符类 是一个或多个重复 是弦末锚 参考文献 regular-expressions.info/Anchors,角色类,重复 相关话题 您还可以使用修剪字符串 开头 和 结尾 的 所有 空

  • 问题内容: 我需要在字符串中的单词之后删除空格。可以用一行代码完成吗? 例: 问题答案: 更多关于在文档

  • 问题内容: 仅在句点结束时,如何删除最后一个字符? 问题答案: (参考:PHP.net上的rtrim)