Sudhakar ha alcuni dati nella colonna A con spazi finali. Se usa la funzione TRIM sui dati, rimuove alcuni spazi finali, ma non tutti. Si chiede perché alcuni spazi vengano saltati e come rimuoverli tutti.

In realtà ci sono diversi modi per affrontare questo problema.

Il metodo giusto per i tuoi scopi dipenderà, invariabilmente, dalla natura dei dati che stai utilizzando.

Prima di tutto, se usi TRIM su una cella, ricorda che rimuove solo gli spazi. Questo, per definizione, significa che rimuove solo i caratteri che hanno il codice ASCII di 32. Sfortunatamente, ci sono altri caratteri ASCII che vengono visualizzati come “spazi”, ma non sono realmente spazi. Questi non verranno rimossi da TRIM.

Sarebbe d’aiuto se potessi capire cosa sono quei personaggi fastidiosi, giusto? Bene, se il testo nella cella non è così lungo, ecco una piccola macro pratica che esaminerà il contenuto della cella e mostrerà ogni carattere, a sua volta, insieme al suo valore ASCII:

Sub StringContents()

Dim sTemp As String     Dim sMsg As String     Dim J As Integer          If Selection.Cells.Count > 1 Then         sMsg = "Please select only one cell"

Else         sMsg = "Full string: >" & ActiveCell.Value & "<" & vbCrLf         For J = 1 To Len(ActiveCell.Value)

sTemp = Mid(ActiveCell.Value, J, 1)

sMsg = sMsg & ">" & sTemp & "<     " & Asc(sTemp) & vbCrLf         Next J     End If     MsgBox sMsg End Sub

Per utilizzare la macro, seleziona la singola cella che desideri testare e quindi eseguila. Si finisce con una finestra di messaggio che mostra la stringa completa insieme a ogni singolo carattere all’interno della stringa.

Una volta che conosci il valore ASCII del carattere offensivo che TRIM non rimuoverà, puoi sostituire quel carattere. Ad esempio, se lo spazio non spazio mostra un valore ASCII di 160, potresti eseguire la sostituzione in questo modo:

=SUBSTITUTE(A1,CHAR(160)," ")

Ciò sostituisce il carattere di spazio effettivo per qualsiasi carattere ASCII 160 nella stringa. Allo stesso modo puoi rimuovere altri spazi fasulli simili.

Naturalmente, puoi provare a utilizzare una diversa funzione di Excel per eliminare alcuni dei caratteri ASCII non stampabili, come questo:

=CLEAN(A1)

Non eliminerà tutto, ma fa un buon lavoro nel ripulire molti dei personaggi offensivi.

Puoi anche iniziare a combinare funzioni nella tua formula di pulizia, in questo modo:

=TRIM(CLEAN(A1))

Potresti fare un ulteriore passo avanti, in questo modo:

=TRIM(SUBSTITUTE(CLEAN(A2),CHAR(160)," "))

Questa formula elimina i 160 caratteri ASCII e le cose catturate da CLEAN, quindi esegue un TRIM su quel risultato.

Se devi pulire un bel po ‘di celle o se devi pulirle regolarmente, potresti prendere in considerazione l’utilizzo di una macro per eseguire il sollevamento pesante. La seguente macro eliminerà molti caratteri non stampabili, lasciando solo i caratteri visibili e la punteggiatura.

Sub CleanCells()

Dim rTarget As Range     Dim c As Range     Dim sTemp As String     Dim J As Integer          Set rTarget = Selection.SpecialCells(xlCellTypeConstants, 2)

For Each c In rTarget         sTemp = c.Value         For J = 1 To 31             sTemp = Replace(sTemp, Chr(J), " ")

Next J         For J = 127 To 255             sTemp = Replace(sTemp, Chr(J), " ")

Next J         c.Value = sTemp     Next c End Sub

La macro funziona solo su quelle celle all’interno della selezione corrente che contengono valori costanti. In altre parole, quelle celle che non contengono formule.

ExcelTips è la tua fonte di formazione economica su Microsoft Excel.

Questo suggerimento (5132) si applica a Microsoft Excel 2007, 2010, 2013 e 2016.