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 è 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 consiste nel guardare semplicemente 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 (10565) si applica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 ed Excel in Office 365. Puoi trovare una versione di questo suggerimento per la vecchia interfaccia di menu di Excel qui: