Liberarsi dei caratteri ASCII a 8 bit (Microsoft Excel)
Bill deve spesso importare le informazioni in un foglio di lavoro in modo da poterle elaborare per la sua azienda. Nella situazione di Bill, uno dei primi passi che deve fare è rimuovere tutti i caratteri ASCII a 8 bit che potrebbero essere nei dati importati. Questi personaggi non devono essere sostituiti con nulla; devono solo essere cancellati in modo che rimangano solo caratteri ASCII a 7 bit. Bill si chiede se ci sia un modo semplice per farlo, magari con una macro di qualche tipo.
Ci sono alcuni modi in cui puoi affrontare questo problema, a seconda delle caratteristiche dei dati con cui stai iniziando. Supponendo che tu abbia solo caratteri a 8 bit nel tuo foglio di lavoro, gli unici codici di caratteri che potrebbero essere usati per i caratteri sono da 0 a 255. Se vuoi limitare i tuoi dati a soli caratteri a 7 bit, significa che vuoi solo cose nell’intervallo del codice carattere compreso tra 0 e 127. Pertanto, è possibile utilizzare una macro per cercare facilmente qualsiasi carattere nell’intervallo compreso tra 128 e 255 e semplicemente eliminarlo. Questa macro utilizza questo approccio:
Sub Remove8Bit1() Cells.Select For i = 128 To 255 X = Chr(i) Selection.Replace What:=X, Replacement:="", _ LookAt:=xlPart, SearchOrder:=xlByRows, _ MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False Next End Sub
L’approccio trova solo quei valori nel foglio di lavoro che si trovano nell’intervallo di 8 bit. Non toccherà nulla che si trovi nell’intervallo di 8 bit effettivamente creato da una formula. (Nella maggior parte dei casi questo non dovrebbe essere un problema. Se si tratta di un problema, la soluzione corretta è modificare le formule creando i risultati offensivi.)
Se i tuoi dati contengono caratteri Unicode, ti consigliamo di utilizzare un approccio diverso. Tecnicamente, i caratteri Unicode non sono caratteri a 8 bit; sono caratteri a 16 bit e possono avere valori di codice carattere compresi tra 0 e 65.535. Poiché vuoi ignorare qualsiasi cosa con un valore superiore a 127, l’utilizzo dell’approccio basato sulla ricerca discusso in precedenza diventa ingombrante: finiresti per fare più di 65.000 ricerche invece di solo 128.
Un approccio migliore è semplicemente guardare tutti i caratteri in tutte le celle selezionate e se hanno un codice carattere superiore a 127, ignorarli.
Questo è l’approccio adottato nella seguente macro:
Sub Remove8Bit2() 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 = Ascw(strCheckChar) If intCheckChar < 128 Then strClean = strClean & strCheckChar End If Next intChar rngCell.Value = strClean Next rngCell End Sub
Si noti che la macro utilizza la funzione Ascw invece della tradizionale funzione Asc in modo che esamini i valori Unicode.
_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 (3142) 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: