去除特殊字符

问题描述

我这里有一个用于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

您将需要调整sAcentossSemAcentos以满足您的需求。此功能也可以直接在电子表格上调用。