Come liberarsi di caratteri alfabetici

Bryan ha un foglio di lavoro che ha un sacco di cellule che hanno alcuni caratteri alfabetici in loro. Egli è alla ricerca di un modo per sbarazzarsi di solo i caratteri alfabetici, non importa dove essi appaiono nella cella. Ad esempio, se la cella contiene "ABC123", Bryan vuole sbarazzarsi di "ABC" e hanno appena "123" rimanente. Allo stesso modo, "A3B2C1" dovrebbe diventare "321" e "# 45P *%" dovrebbe diventare "# 45 *%".

L'unico modo per affrontare questo problema è attraverso l'utilizzo di macro. Se si vuole mettere a nudo semplicemente fuori i personaggi, in luogo, allora si può farlo selezionando le celle che si desidera incidere e quindi eseguire una macro che esamina ogni cellula ed elimina i caratteri problematici. Ci sono molti modi si potrebbe fare questo; la seguente macro è un approccio diretto.

Sub CleanText1 ()
Dim rngCell come gamma
Dim intChar As Integer
Dim strCheckString As String
Dim strCheckChar As String
Dim intCheckChar As Integer
Dim strClean As String

Per ogni selezione rngCell In
strCheckString = rngCell.Value
strClean = ""

Per intChar = 1 Per Len (strCheckString)
strCheckChar = Mid (strCheckString, intChar, 1)
intCheckChar = Asc (strCheckChar)
Select Case intCheckChar
Caso 65 a 90 'case caratteri superiori
'Non fare nulla
Caso 97 a 122 'caratteri minuscoli
'Non fare nulla
Caso 128 a 151 'caratteri speciali di lingue
'Non fare nulla
Caso 153 a 154 'caratteri speciali di lingue
'Non fare nulla
Caso 159 a 165 'caratteri speciali di lingue
'Non fare nulla
Case Else
strClean = strClean & strCheckChar
End Select
Successivo intChar
rngCell.Value = strClean
Successivo rngCell
End Sub

La cosa bella di questo approccio escludendo i personaggi è che si può facilmente sbarazzarsi di altri personaggi, semplicemente modificando ciò che viene controllato (e quali azioni sono prese) nella struttura Select Case.

Se non si desidera modificare le celle originali, un buon approccio è quello di mettere insieme una funzione definita dall'utente che restituirà una versione "pulita" di una stringa. Ciò può essere ottenuto facendo alcune modifiche alla macro precedente.

Funzione CleanText2 (ByVal sRAW As String) As String
Dim intChar As Integer
Dim strCheckString As String
Dim strCheckChar As String
Dim intCheckChar As Integer
Dim strClean As String

Application.Volatile
strClean = ""
Per intChar = 1 Per Len (sRAW)
strCheckChar = Mid (sRAW, intChar, 1)
intCheckChar = Asc (strCheckChar)
Select Case intCheckChar
Caso 65 a 90 'case caratteri superiori
'Non fare nulla
Caso 97 a 122 'caratteri minuscoli
'Non fare nulla
Caso 128 a 151 'caratteri speciali di lingue
'Non fare nulla
Caso 153 a 154 'caratteri speciali di lingue
'Non fare nulla
Caso 159 a 165 'caratteri speciali di lingue
'Non fare nulla
Case Else
strClean = strClean & strCheckChar
End Select
Successivo intChar
CleanText2 = strClean
End Function

Per utilizzare la funzione, si potrebbe mettere una formula come la seguente in una cella:

= CleanText2 (A1)

Il risultato è che la formula restituisce una versione "pulita" di ciò che è nella cella A1 senza disturbare il contenuto della cella A1.

ExcelTips è la vostra fonte per la formazione Microsoft Excel conveniente. Questo suggerimento (3219) si applica a Microsoft Excel 97, 2000, 2002, e 2003. È possibile trovare una versione di questo suggerimento per l'interfaccia ribbon di Excel (Excel 2007 e versioni successive) qui: Come liberarsi di caratteri alfabetici.