首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用VBA删除文本(向左或向右),以便我只保留特定字符串

使用VBA删除文本(向左或向右),以便我只保留特定字符串
EN

Stack Overflow用户
提问于 2019-05-13 19:52:45
回答 2查看 59关注 0票数 2

每天我们都会收到一个包含数据库转储的Excel文件。文件的大部分内容都在我创建的VBA脚本中进行排序,但我还有一个无法解决的问题。在其中一列(A)中,我有时有两个字符串,我只想保留其中的一个。我想要保留的字符串看起来像"M1234 5678“。数字会改变..。该列有时在M1234 5678之前或之后有其他文本。我想删除所有的文本,这样我就只保留所需的字符串。

我已经尝试使用一个搜索函数来解决这个问题,使用trim函数并搜索一个看起来像"M#### ####“的字符串。走这条路就没那么幸运了。我必须承认,两周前,我一直在摆弄下面的代码,因为我当时试图解决的事情可能会搞砸。

代码语言:javascript
复制
    Sub TrimText()
       Dim FinalValue As String
       Dim lastStop As Long
       With Sheets("Blad2")
       lastStop = .Cells(.Rows.Count, "A").End(xlUp).Row
       For i = 2 To lastStop
       FinalValue = Trim(Cells(i, 1).Value)
       If InStr(FinalValue, "ALQ") > 0 Then
       Cells(i, 1).Value = Left(FinalValue, InStr(FinalValue, "M*"))
       End If
       Next
       End With
    End Sub

我希望删除M#### ####字符串左侧或右侧的任何文本。

谢谢你的帮助。

EN

Stack Overflow用户

发布于 2019-05-13 19:57:37

如果字符串长度保持不变,则可以使用正则表达式模式

代码语言:javascript
复制
M\d{4}\s\d{4}

这可能看起来像一个函数调用(如果条件被删除)

代码语言:javascript
复制
Option Explicit
Public Sub TrimText()
    Dim FinalValue As String, lastStop As Long, i As Long, re As Object
    Set re = CreateObject("VBScript.RegExp")
    With ThisWorkbook.Worksheets("Blad2")
        lastStop = .Cells(.Rows.Count, "A").End(xlUp).Row
        For i = 2 To lastStop
            FinalValue = Trim(Cells(i, 1).Value)
            .Cells(i, 1).Value = ReplaceMatch(re, .Cells(i, 1).Value, "M\d{4}\s\d{4}")
        Next
    End With
End Sub

Public Function ReplaceMatch(ByVal re As Object, inputString As String, ByVal pattern As String) As String
    With re
        .Global = True
        .MultiLine = True
        .pattern = pattern

        If .test(inputString) Then
            ReplaceMatch = .Execute(inputString)(0)
        Else
            ReplaceMatch = inputString
        End If
    End With
End Function
票数 2
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56111762

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档