Liberarsi dei caratteri alfabetici (Microsoft Excel)
Bryan ha un foglio di lavoro che ha molte celle che contengono alcuni caratteri alfabetici. Sta cercando un modo per sbarazzarsi solo di quei caratteri alfabetici, indipendentemente da dove compaiono nella cella. Ad esempio, se la cella contiene “ABC123”, Bryan vuole sbarazzarsi di “ABC”
e ne rimangono solo “123”. Allo stesso modo, “A3B2C1” dovrebbe diventare “321”
e “# 45P%” dovrebbe diventare “# 45%”.
L’unico modo per affrontare questo problema è attraverso l’uso di macro. Se vuoi semplicemente rimuovere i caratteri, in posizione, puoi farlo selezionando le celle che desideri influenzare e quindi eseguendo una macro che esamina ogni cella ed elimina i caratteri offensivi. Ci sono molti modi per farlo; la seguente macro è un approccio diretto.
Sub CleanText1() Dim rngCell As Range Dim intChar As Integer Dim strCheckString As String Dim strCheckChar As String Dim intCheckChar As Integer Dim strClean As String For Each rngCell In Selection strCheckString = rngCell.Value strClean = "" For intChar = 1 To Len(strCheckString) strCheckChar = Mid(strCheckString, intChar, 1) intCheckChar = Asc(strCheckChar) Select Case intCheckChar Case 65 To 90 'upper case chars 'Do nothing Case 97 To 122 'lower case chars 'Do nothing Case 128 To 151 'special language chars 'Do nothing Case 153 To 154 'special language chars 'Do nothing Case 159 To 165 'special language chars 'Do nothing Case Else strClean = strClean & strCheckChar End Select Next intChar rngCell.Value = strClean Next rngCell End Sub
La cosa bella di questo approccio per eliminare i personaggi è che puoi sbarazzarti facilmente di altri personaggi semplicemente modificando ciò che viene controllato (e quali azioni vengono intraprese) nella struttura Seleziona caso.
Se non si desidera modificare le celle originali, un buon approccio è mettere insieme una funzione definita dall’utente che restituirà una versione “pulita” di una stringa. Ciò può essere ottenuto apportando alcune modifiche alla macro precedente.
Function 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 = "" For intChar = 1 To Len(sRaw) strCheckChar = Mid(sRaw, intChar, 1) intCheckChar = Asc(strCheckChar) Select Case intCheckChar Case 65 To 90 'upper case chars 'Do nothing Case 97 To 122 'lower case chars 'Do nothing Case 128 To 151 'special language chars 'Do nothing Case 153 To 154 'special language chars 'Do nothing Case 159 To 165 'special language chars 'Do nothing Case Else strClean = strClean & strCheckChar End Select Next intChar CleanText2 = strClean End Function
Per utilizzare la funzione, potresti inserire una formula come la seguente in una cella:
=CleanText2(A1)
Il risultato è che la formula restituisce una versione “pulita” di tutto ciò che si trova nella cella A1 senza disturbare il contenuto della cella A1.
_Nota: _
Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti ExcelTips), ho preparato una pagina speciale che include informazioni utili.
ExcelTips è la tua fonte di formazione economica su Microsoft Excel.
Questo suggerimento (3219) si applica a Microsoft Excel 97, 2000, 2002 e 2003. Puoi trovare una versione di questo suggerimento per l’interfaccia a nastro di Excel (Excel 2007 e versioni successive) qui: