VBA:遍历具有动态数据集的列并从每个单元格中删除特定的文本

时间:2018-07-11 01:45:37

标签: vba excel-vba

我有问题;

我想创建一个宏,该宏将贯穿工作表中的一列(在本例中为A列),并循环遍历包含数据的每个单元格。每当宏在一个单元格中循环时,我都需要它从每个单元格中删除一组特定的文本。我需要删除的文本永远不会更改,因为我从中提取的网站中的数据是相同的。但是,我需要删除的文本将始终后面跟着一串数字,在这种情况下,这表示到我工作的设施的进货货运单。

数据示例:

Example Data

我尝试创建一个将保留数字但删除{“ isaId”:的宏。我需要数字自己复制到我正在制作的工具的另一部分中的HTML发送请求中。

这是我的代码:

Sub Test2()
    Dim test As Worksheet
        Set test = Worksheets("test")
    Dim testcheck As Boolean
    Range("A2").Select

    Do Until IsEmpty(ActiveCell)
        If testcheck = "27*703" Like "276782703" = True Then

'   276782703 is just an example number; the numbers will always be in this format, meaning they will always start with 2 and end with 703 with five random numbers in-between.

            ActiveCell.FormulaR1C1 = testcheck
                ActiveCell.Offset(1, 0).Select
        End If
    Loop
End Sub

我不确定我不确定使用通配符,尽管我不确定,而我提供的代码给我一个错误,所以我很困惑。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

尝试这种基本的正则表达式(RegEx)匹配。

Sub find2_____703()

    Dim i As Long, str As String
    Static rgx As Object

    If rgx Is Nothing Then
        Set rgx = CreateObject("VBScript.RegExp")
        rgx.Pattern = "2\d{5}703"
    End If

    With Worksheets("test")
        For i = 2 To .Cells(.Rows.Count, "A").End(xlUp).Row
            str = .Cells(i, "A").Value2
            With rgx
                If .Test(str) Then
                    str = .Execute(str).Item(0)
                End If
            End With
            .Cells(i, "A") = str
        Next i
    End With

End Sub

模式是数字2,然后是介于零和九之间的五个随机数字,然后是七-哦-三。