如何解决去除特殊字符
我这里有一个用于excel的VB代码,该代码删除了特殊字符。我的问题是为什么要删除某些特殊字符,例如c列中的某些特殊字符没有更改或被删除。
代码:
Sub Invalid()
Dim e
For Each e In Array("–","€","â","¦","Â","®","®","—","Ã","ña","±a","¡c","±","'","–","ó","​","…","®","‹")
If e Like "[–]" Then
Columns("a").Replace "–",""
Columns("b").Replace "–",""
Columns("c").Replace "–",":"
Columns("d").Replace "–",""
Columns("e").Replace "–",":"
Else
If e Like "[ó]" Then
Columns("a").Replace "ó",""
Columns("b").Replace "ó",""
Columns("c").Replace "ó","o"
Columns("d").Replace "ó",""
Columns("e").Replace "ó",""
Else
If e Like "[ña]" Then
Columns("a").Replace "ña",""
Columns("b").Replace "ña",""
Columns("c").Replace "ña",""
Columns("d").Replace "ña",""
Columns("e").Replace "ña",""
Else
If e Like "[​]" Then
Columns("a").Replace "​",""
Columns("b").Replace "​",""
Columns("c").Replace "​",""
Columns("d").Replace "​",""
Columns("e").Replace "​",""
Else
If e Like "[…]" Then
Columns("a").Replace "…",""
Columns("b").Replace "…",""
Columns("c").Replace "…",""
Columns("d").Replace "…",""
Columns("e").Replace "…",""
Else
If e Like "[®]" Then
Columns("a").Replace "®",""
Columns("b").Replace "®",""
Columns("c").Replace "®",""
Columns("d").Replace "®",""
Columns("e").Replace "®",""
Else
If e Like "[€]" Then
Columns("a").Replace "€",""
Columns("b").Replace "€",""
Columns("c").Replace "€",""
Columns("d").Replace "€",""
Columns("e").Replace "€",""
Else
If e Like "[â]" Then
Columns("a").Replace "â",""
Columns("b").Replace "â",""
Columns("c").Replace "â",""
Columns("d").Replace "â",""
Columns("e").Replace "â",""
Else
If e Like "[¦]" Then
Columns("a").Replace "¦",""
Columns("b").Replace "¦",""
Columns("c").Replace "¦",""
Columns("d").Replace "¦",""
Columns("e").Replace "¦",""
Else
If e Like "[Â]" Then
Columns("a").Replace "Â",""
Columns("b").Replace "Â",""
Columns("c").Replace "Â",""
Columns("d").Replace "Â",""
Columns("e").Replace "Â",""
Else
If e Like "[®]" Then
Columns("a").Replace "®",""
Columns("b").Replace "®",""
Columns("c").Replace "®",""
Columns("d").Replace "®",""
Columns("e").Replace "®",""
Else
If e Like "[®]" Then
Columns("a").Replace "®",""
Columns("b").Replace "®",""
Columns("c").Replace "®",""
Columns("d").Replace "®",""
Columns("e").Replace "®",""
Else
If e Like "[—]" Then
Columns("a").Replace "—",""
Columns("b").Replace "—",""
Columns("c").Replace "—",""
Columns("d").Replace "—",""
Columns("e").Replace "—",""
Else
If e Like "[Ã]" Then
Columns("a").Replace "Ã",""
Columns("b").Replace "Ã",""
Columns("c").Replace "Ã",""
Columns("d").Replace "Ã",""
Columns("e").Replace "Ã",""
Else
If e Like "[±a]" Then
Columns("a").Replace "±a",""
Columns("b").Replace "±a",""
Columns("c").Replace "±a",""
Columns("d").Replace "±a",""
Columns("e").Replace "±a",""
Else
If e Like "[¡c]" Then
Columns("a").Replace "¡c",""
Columns("b").Replace "¡c",""
Columns("c").Replace "¡c",""
Columns("d").Replace "¡c",""
Columns("e").Replace "¡c",""
Else
If e Like "[±]" Then
Columns("a").Replace "±",""
Columns("b").Replace "±",""
Columns("c").Replace "±",""
Columns("d").Replace "±",""
Columns("e").Replace "±",""
Else
If e Like "[']" Then
Columns("a").Replace "'",""
Columns("b").Replace "'",""
Columns("c").Replace "'",""
Columns("d").Replace "'",""
Columns("e").Replace "'",""
Else
If e Like "[–]" Then
Columns("a").Replace "–",""
Columns("b").Replace "–",""
Columns("c").Replace "–",""
Columns("d").Replace "–",""
Columns("e").Replace "–",""
Else
If e Like "[‹]" Then
Columns("a").Replace "‹",""
Columns("b").Replace "‹",""
Columns("c").Replace "‹",""
Columns("d").Replace "‹",""
Columns("e").Replace "‹",""
Else
If e Like "[–]" Then
Columns("a").Replace "–",":"
Columns("d").Replace "–",""
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
Next
End Sub
解决方法
更短:
Sub Invalid()
Dim e
For Each e In Array("–","€","â","¦","Â","®","®","—",_
"Ã","ña","±a","¡c","±","'","–","ó",_
"​","…","®","‹")
Select Case e
Case "–"
Range("A1:B1,D1").EntireColumn.Replace e,""
Range("C1,E1").EntireColumn.Replace e,":"
Case "ó"
Range("A1:B1,D1:E1").EntireColumn.Replace e,""
Range("C1").EntireColumn.Replace e,"o"
Case "–"
Range("A1:B1,":"
Case Else
Range("A:E").Replace e,""
End Select
Next e
End Sub
,
很久以前,我发现了一个函数(我认为)可以更好地实现您想要的功能:
Public Function RepLetters(txt As String) As String
Dim SAcentos As String
Dim SSemAcentos As String
Dim STemp As String
Dim i As Long
'All letters to be replaced
SAcentos = "àáâãäèéêëìíîïòóôõöùúûüÀÁÂÃÄÈÉÊËÌÍÎÒÓÔÕÖÙÚÛÜçÇñÑ"
'Letters to replace on
SSemAcentos = "aaaaaeeeeiiiiooooouuuuAAAAAEEEEIIIOOOOOUUUUcCnN"
'sTemp is the received string
STemp = text
' Loop through every letter of 'sAcentos' and replace by
' corresponding letter in 'sSemAcentos'
For i = 1 To Len(SAcentos)
STemp = Replace(STemp,Mid$(SAcentos,i,1),Mid$(SSemAcentos,1))
Next i
'return new string
RepLetter = STemp
End Function
您将需要调整sAcentos
和sSemAcentos
以满足您的需求。此功能也可以直接在电子表格上调用。