Come eliminare i caratteri speciali / indesiderati in Excel

  • Condividi Questo
Michael Brown

In questo articolo imparerete a eliminare caratteri specifici da una stringa di testo e a rimuovere caratteri indesiderati da più celle contemporaneamente.

Quando si importano dati in Excel da un'altra fonte, è possibile che un gran numero di caratteri speciali finisca nei fogli di lavoro. Ciò che è ancora più frustrante è che alcuni caratteri sono invisibili, il che produce spazi bianchi extra prima, dopo o all'interno delle stringhe di testo. Questo tutorial fornisce soluzioni per tutti questi problemi, risparmiandovi la fatica di dover esaminare i dati cella per cella ed eliminare quelli indesiderati.caratteri a mano.

    Rimuovere un carattere speciale da una cella di Excel

    Per eliminare un carattere specifico da una cella, sostituirlo con una stringa vuota utilizzando la funzione SOSTITUISCI nella sua forma più semplice:

    SOSTITUIRE( cella , carbone , "")

    Ad esempio, per eliminare un punto interrogativo da A2, la formula in B2 è:

    =SOSTITUIRE(A2, "?", "")

    Per rimuovere un carattere non presente sulla tastiera, è possibile copiarlo/incollarlo nella formula dalla cella originale.

    Ad esempio, ecco come eliminare un punto interrogativo invertito:

    =SOSTITUIRE(A2, "¿", "")

    Ma se un personaggio indesiderato è invisibile Come si fa a inserirlo nella formula? È sufficiente trovare il suo numero di codice utilizzando la funzione CODICE.

    Nel nostro caso, il carattere indesiderato ("¿") si trova per ultimo nella cella A2, quindi utilizziamo una combinazione delle funzioni CODICE e DIRITTO per recuperare il suo valore di codice univoco, ovvero 191:

    =CODICE(DESTRA(A2))

    Una volta ottenuto il codice del carattere, servite la funzione CHAR corrispondente alla formula generica di cui sopra. Per il nostro set di dati, la formula è la seguente:

    =SOSTITUIRE(A2, CHAR(191),"")

    Nota: la funzione SOSTITUISCI è sensibile alle maiuscole e alle minuscole Ciò significa che le lettere minuscole e quelle maiuscole vengono trattate come caratteri diversi. Tenetene conto se il carattere indesiderato è una lettera.

    Cancellare più caratteri da una stringa

    In uno degli articoli precedenti, abbiamo visto come rimuovere caratteri specifici da stringhe in Excel annidando diverse funzioni SUBSTITUTE una dentro l'altra. Lo stesso approccio può essere utilizzato per eliminare due o più caratteri indesiderati in una sola volta:

    SOSTITUTO(SOSTITUTO(SOSTITUTO( cella , char1 , ""), char2 , ""), char3 , "")

    Ad esempio, per eliminare i punti esclamativi e interrogativi normali e quelli invertiti da una stringa di testo in A2, utilizzare questa formula:

    =SOSTITUTO(SOSTITUTO(SOSTITUTO(SOSTITUTO(A2, "!", ""), "¡", ""), "?", ""), "¿", "")

    Lo stesso si può fare con l'aiuto della funzione CHAR, dove 161 è il codice dei caratteri per "¡" e 191 è il codice dei caratteri per "¿":

    =SOSTITUTO(SOSTITUTO(SOSTITUTO(SOSTITUTO(A3, "!", ""), "?", ""), CHAR(161), ""), CHAR(191), "")

    Le funzioni SUBSTITUTE annidate funzionano bene per un numero ragionevole di caratteri, ma se si devono rimuovere decine di caratteri, la formula diventa troppo lunga e difficile da gestire. L'esempio successivo mostra una soluzione più compatta ed elegante.

    Rimuovere tutti i caratteri indesiderati in una sola volta

    La soluzione funziona solo in Excel per Microsoft 365

    Come probabilmente saprete, Excel 365 dispone di una funzione speciale che consente di creare funzioni personalizzate, comprese quelle che calcolano in modo ricorsivo. Questa nuova funzione si chiama LAMBDA e potete trovarne tutti i dettagli nel tutorial sopra linkato. Di seguito illustrerò il concetto con un paio di esempi pratici.

    Una funzione LAMBDA personalizzata per rimuovere i caratteri indesiderati è la seguente:

    =LAMBDA(stringa, caratteri, IF(caratteri"", RemoveChars(SUBSTITUTE(stringa, LEFT(caratteri, 1), ""), RIGHT(caratteri, LEN(caratteri) -1)), stringa))

    Per poter utilizzare questa funzione nei fogli di lavoro, è necessario innanzitutto assegnarle un nome. A tal fine, premere Ctrl + F3 per aprire la finestra di dialogo Nome Manager e quindi definire un Nuovo nome in questo modo:

    1. Nel Nome inserire il nome della funzione: RimuoviCaratteri .
    2. Impostare l'ambito su Libro di lavoro .
    3. Nel Si riferisce a incollare la formula di cui sopra.
    4. Facoltativamente, si può inserire la descrizione dei parametri nel campo Commenti I parametri verranno visualizzati quando si digita una formula in una cella.
    5. Cliccare OK per salvare la nuova funzione.

    Per istruzioni dettagliate, vedere Come dare un nome a una funzione LAMBDA personalizzata.

    Una volta che la funzione ha un nome, ci si può riferire ad essa come a qualsiasi formula nativa.

    Dal punto di vista dell'utente, la sintassi della nostra funzione personalizzata è molto semplice:

    RemoveChars(stringa, caratteri)

    Dove:

    • Stringa - è la stringa originale o un riferimento alla cella o all'intervallo contenente la stringa o le stringhe.
    • Caratteri - Può essere rappresentato da una stringa di testo o da un riferimento di cella.

    Per comodità, inseriamo dei caratteri indesiderati in una cella, ad esempio D2. Per rimuovere tali caratteri da A2, la formula è:

    =RimuoviCaratteri(A2, $D$2)

    Affinché la formula funzioni correttamente, è necessario tenere conto dei seguenti elementi:

    • In D2, i caratteri sono elencati senza spazi, a meno che non si desideri eliminare anche gli spazi.
    • L'indirizzo della cella contenente i caratteri speciali viene bloccato con il segno $ ($D$2) per evitare che il riferimento cambi quando si copia la formula nelle celle successive.

    Quindi, trascinando semplicemente la formula verso il basso, tutti i caratteri elencati in D2 vengono eliminati dalle celle da A2 a A6:

    Per pulire più celle con una sola formula, fornire l'intervallo A2:A6 come primo argomento:

    =RimuoviCaratteri(A2:A6, D2)

    Poiché la formula viene inserita solo nella cella più in alto, non è necessario preoccuparsi di bloccare le coordinate della cella: un riferimento relativo (D2) va bene in questo caso. Inoltre, grazie al supporto degli array dinamici, la formula si estende automaticamente a tutte le celle a cui si fa riferimento:

    Rimozione di un set di caratteri predefinito

    Per eliminare un insieme predefinito di caratteri da più celle, è possibile creare un'altra LAMBDA che richiami la funzione principale RimuoviCaratteri e specificare i caratteri indesiderati nel secondo parametro, ad esempio:

    Per eliminare caratteri speciali abbiamo creato una funzione personalizzata chiamata RimuoviCaratteriSpeciali :

    =LAMBDA(stringa, RemoveChars(stringa, "?¿!¡*%#@^"))

    A rimuovere i numeri da stringhe di testo, abbiamo creato un'altra funzione chiamata RimuoviNumeri :

    =LAMBDA(stringa, RemoveChars(stringa, "0123456789"))

    Entrambe le funzioni di cui sopra sono facilissime da usare, poiché richiedono un solo argomento: la stringa originale.

    Per eliminare caratteri speciali da A2, la formula è:

    =RimuoviCaratteriSpeciali(A2)

    Per eliminare solo caratteri numerici:

    =RimuoviNumeri(A2)

    Come funziona questa funzione:

    In sostanza, il RimuoviCaratteri La funzione scorre l'elenco di Caratteri e rimuove un carattere alla volta. Prima di ogni chiamata ricorsiva, la funzione IF controlla i caratteri rimanenti. Se il carattere Caratteri non è vuota (caratteri""), la funzione richiama se stessa. Non appena l'ultimo carattere è stato elaborato, la formula restituisce stringa la sua forma attuale e le sue uscite.

    Per una descrizione dettagliata della formula, vedere LAMBDA ricorsivo per rimuovere i caratteri indesiderati.

    Rimuovere i caratteri speciali con VBA

    Le funzioni funzionano in tutte le versioni di Excel

    Se la funzione LAMBDA non è disponibile in Excel, nulla vieta di creare una funzione simile con VBA. Una funzione definita dall'utente (UDF) può essere scritta in due modi.

    Funzione personalizzata per eliminare i caratteri speciali ricorsivo :

    Questo codice emula la logica della funzione LAMBDA discussa in precedenza.

    Function RemoveUnwantedChars(str As String , chars As String ) If ( "" chars) Then str = Replace(str, Left(chars, 1), "" ) chars = Right(chars, Len(chars) - 1) RemoveUnwantedChars = RemoveUnwantedChars(str, chars) Else RemoveUnwantedChars = str End If End Function

    Funzione personalizzata per rimuovere i caratteri speciali non ricorsivo :

    In questo caso, scorriamo i caratteri indesiderati da 1 a Len(chars) e sostituiamo quelli trovati nella stringa originale con nulla. La funzione MID estrae i caratteri indesiderati uno per uno e li passa alla funzione Replace.

    Funzione RemoveUnwantedChars(str As String , chars As String ) For index = 1 To Len(chars) str = Replace(str, Mid(chars, index, 1), "" ) Next RemoveUnwantedChars = str Fine funzione

    Inserite uno dei codici di cui sopra nella cartella di lavoro, come spiegato in Come inserire codice VBA in Excel, e la vostra funzione personalizzata è pronta per essere utilizzata.

    Per non confondere la nostra nuova funzione definita dall'utente con quella definita da Lambda, l'abbiamo chiamata in modo diverso:

    RemoveUnwantedChars(stringa, caratteri)

    Supponendo che la stringa originale si trovi in A2 e i caratteri indesiderati in D2, possiamo eliminarli usando questa formula:

    = Rimuovi caratteri indesiderati(A2, $D$2)

    Funzione personalizzata con caratteri codificati

    Se non volete preoccuparvi di fornire i caratteri speciali per ogni formula, potete specificarli direttamente nel codice:

    Function RemoveSpecialChars(str As String ) As String Dim chars As String Dim index As Long chars = "?¿!¡*%#$(){}[]^&/\~+-" For index = 1 To Len(chars) str = Replace(str, Mid(chars, index, 1), "" ) Next RemoveSpecialChars = str End Function

    Tenete presente che il codice sopra riportato è a scopo dimostrativo. Per l'uso pratico, assicuratevi di includere tutti i caratteri che volete eliminare nella riga seguente:

    chars = "?¿!¡*%#$(){}[]^&/\~+-"

    Questa funzione personalizzata si chiama RimuoviCaratteriSpeciali e richiede un solo argomento: la stringa originale:

    RimuoviCaratteriSpeciali(stringa)

    Per eliminare i caratteri speciali dal nostro set di dati, la formula è:

    =RimuoviCaratteriSpeciali(A2)

    Rimuovere i caratteri non stampabili in Excel

    Microsoft Excel dispone di una funzione speciale per eliminare i caratteri non stampati, la funzione CLEAN, che tecnicamente elimina i primi 32 caratteri dell'insieme ASCII a 7 bit (codici da 0 a 31).

    Ad esempio, per eliminare caratteri non stampabili da A2, ecco la formula da utilizzare:

    =CLEAN(A2)

    In questo modo si eliminano i caratteri non stampati, ma rimangono gli spazi prima/dopo il testo e tra le parole.

    Per sbarazzarsi di spazi extra , avvolgere la formula CLEAN nella funzione TRIM:

    =TRIM(CLEAN(A2))

    Ora, tutti gli spazi iniziali e finali vengono rimossi, mentre gli spazi intermedi vengono ridotti a un singolo carattere di spazio:

    Se si desidera eliminare assolutamente tutti gli spazi all'interno di una stringa, sostituisce il carattere spazio (codice 32) con una stringa vuota:

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

    Alcuni spazi o altri caratteri invisibili rimangono ancora nel foglio di lavoro? Ciò significa che quei caratteri hanno valori diversi nel set di caratteri Unicode.

    Ad esempio, il codice dei caratteri di un spazio non interrotto ( ) è 160 e può essere spurgato con questa formula:

    =SOSTITUIRE(A2, CHAR(160)," ")

    Per cancellare un carattere specifico non di stampa Le istruzioni dettagliate e gli esempi di formula si trovano qui: Come rimuovere un carattere specifico non stampabile.

    Eliminare i caratteri speciali con Ultimate Suite

    Supporta Excel per Microsoft 365, Excel 2019 - 2010

    In quest'ultimo esempio, vi mostrerò il modo più semplice per rimuovere i caratteri speciali in Excel. Con la Ultimate Suite installata, ecco cosa dovete fare:

    1. Sul Dati Ablebits nella scheda Testo gruppo, fare clic su Rimuovere > Rimuovere i personaggi .

  • Nel riquadro del componente aggiuntivo, scegliere l'intervallo di origine, selezionare Rimuovere i set di caratteri e scegliere l'opzione desiderata dall'elenco a discesa ( Simboli & segni di punteggiatura in questo esempio).
  • Colpire il Rimuovere pulsante.
  • In un attimo, otterrete un risultato perfetto:

    Se qualcosa va storto, non c'è da preoccuparsi: una copia di backup del foglio di lavoro verrà creata automaticamente come il file Eseguire il backup di questo foglio di lavoro è selezionata per impostazione predefinita.

    Siete curiosi di provare il nostro strumento di rimozione? Il link alla versione di valutazione è proprio qui sotto. Vi ringrazio per la lettura e spero di vedervi sul nostro blog la prossima settimana!

    Download disponibili

    Eliminare i caratteri speciali - esempi (file .xlsm)

    Ultimate Suite - versione di prova (file .exe)

    Michael Brown è un appassionato di tecnologia dedicato con una passione per la semplificazione di processi complessi utilizzando strumenti software. Con oltre un decennio di esperienza nel settore tecnologico, ha affinato le sue competenze in Microsoft Excel e Outlook, nonché in Fogli Google e Documenti. Il blog di Michael è dedicato alla condivisione delle sue conoscenze e competenze con gli altri, fornendo suggerimenti e tutorial facili da seguire per migliorare la produttività e l'efficienza. Che tu sia un professionista esperto o un principiante, il blog di Michael offre spunti preziosi e consigli pratici per ottenere il massimo da questi strumenti software essenziali.