我需要删除特定列中字符串中的前缀特殊字符,例如我在B列中的数据(例如从A1到A10000)我需要结果。下面是我的示例字符串
EX1: 12# - 第一个代码12/05或 0000000-第一代码< 12>去旅行
结果:第一个代码12/05 第一个代码旅行**
同样地,将复制相同的结果数据,并且所有数字都应替换为“*”,但不应删除特殊字符。
列c中的结果应如下所述。
First code **/**
First code <$**.00> take a trip**
答案 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对我来说非常有用。