移除特殊修剪器的VBA代码

时间:2016-03-15 21:21:12

标签: vba

我需要删除特定列中字符串中的前缀特殊字符,例如我在B列中的数据(例如从A1到A10000)我需要结果。下面是我的示例字符串

EX1: 12# - 第一个代码12/05或      0000000-第一代码< 12>去旅行

结果:第一个代码12/05          第一个代码旅行**

同样地,将复制相同的结果数据,并且所有数字都应替换为“*”,但不应删除特殊字符。

列c中的结果应如下所述。

     First code **/**
     First code <$**.00> take a trip**

1 个答案:

答案 0 :(得分:0)

这对我在regexp上工作有好处,所以这就是你如何做你想做的事情 - 我在单元格B中编写第一个“code-and-special-chars”部分,使用单元格C作为一个临时的,所以它看起来不太神奇,结果将在D列:

Public Sub that()
    mySheet = "regexp"
    Dim strInput As String
    Dim re As Object
    Set re = CreateObject("VBScript.RegExp")

    Set Myrange = ThisWorkbook.Sheets(mySheet).Range("A1:A1000")
'    re.Pattern = ThisWorkbook.Sheets(mySheet).Cells(1, 8).Value
    re.Pattern = "([^a-zA-Z \r\t\n\f]*)(.*)(.*)"
    For Each C In Myrange
        If re.Pattern <> "" Then
            strInput = C.Value    
            If re.test(strInput) Then
                C.Offset(0, 1) = re.Replace(strInput, "$1")
                C.Offset(0, 2) = re.Replace(strInput, "$2")
            Else
                C.Offset(0, 1) = "(Not matched)"
            End If

        End If
    Next
' then do it again to replace numbers
    Set Myrange = ThisWorkbook.Sheets(mySheet).Range("C1:C1000")
    re.Pattern = "[0-9]"       
    For Each C In Myrange
        strInput = C.Value
        Do While re.test(strInput)
            strInput = re.Replace(strInput, "*")
            ' MsgBox (strInput)
        Loop
        C.Offset(0, 1) = strInput
    Next
End Sub

answer对我来说非常有用。