Eliminazione di tutti gli spazi (Microsoft Excel)
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.