Rimuovere il testo prima, dopo o tra due caratteri in Excel

  • Condividi Questo
Michael Brown

Negli ultimi due articoli abbiamo analizzato diversi modi per rimuovere i caratteri dalle stringhe in Excel. Oggi analizzeremo un altro caso d'uso: come eliminare tutto ciò che precede o segue un carattere specifico.

    Cancellare il testo prima, dopo o tra 2 caratteri con Trova & Sostituisci

    Per manipolare i dati in più celle, Trova e sostituisci è lo strumento giusto. Per rimuovere parte di una stringa che precede o segue un carattere specifico, ecco i passaggi da eseguire:

    1. Selezionare tutte le celle in cui si desidera eliminare il testo.
    2. Premere Ctrl + H per aprire la finestra Trova e sostituisci dialogo.
    3. Nel Trova cosa inserire una delle seguenti combinazioni:
      • Per eliminare il testo prima di un determinato carattere , digitare il carattere preceduto da un asterisco (*char).
      • Per rimuovere il testo dopo un certo personaggio , digitare il carattere seguito da un asterisco (char*).
      • Per eliminare una sottostringa tra due personaggi , digitare un asterisco circondato da 2 caratteri (char*char).
    4. Lasciare il Sostituire con casella vuota.
    5. Cliccare Sostituire tutti .

    Ad esempio, per rimuovere tutto quello che c'è dopo la virgola compresa la virgola stessa, inserire una virgola e un segno di asterisco (,*) nel campo Trova cosa e si otterrà il seguente risultato:

    Per eliminare una sottostringa prima di una virgola , digitare un asterisco, una virgola e uno spazio (*, ) nel campo Trova cosa box.

    Si noti che non stiamo sostituendo solo una virgola ma anche una virgola e uno spazio Se i dati sono separati da virgole senza spazi, utilizzare un asterisco seguito da una virgola (*,).

    Per eliminare il testo tra due virgole utilizzare un asterisco circondato da virgole (,*,).

    Suggerimento: se si preferisce che i nomi e i numeri di telefono siano separati da una virgola, digitare una virgola (,) nel campo Sostituire con campo.

    Rimuovere parte del testo con Flash Fill

    Nelle versioni moderne di Excel (2013 e successive), esiste un altro modo semplice per eliminare il testo che precede o segue un carattere specifico: la funzione Riempimento flash. Ecco come funziona:

    1. In una cella accanto alla prima cella con i dati, digitare il risultato atteso e premere Invio.
    2. Quando Excel percepisce lo schema dei valori immessi, visualizza un'anteprima delle celle rimanenti che seguono lo stesso schema.
    3. Premete il tasto Invio per accettare il suggerimento.

    Fatto!

    Rimuovere il testo utilizzando le formule

    In Microsoft Excel, molte manipolazioni dei dati eseguite utilizzando le funzioni integrate possono essere realizzate anche con una formula. A differenza dei metodi precedenti, le formule non apportano alcuna modifica ai dati originali e consentono un maggiore controllo sui risultati.

    Come rimuovere tutto ciò che si trova dopo un carattere specifico

    Per eliminare il testo dopo un determinato carattere, la formula generica è:

    SINISTRA( cella , RICERCA(" carbone ", cella ) -1)

    In questo caso, utilizziamo la funzione SEARCH per ottenere la posizione del carattere e la passiamo alla funzione LEFT, che estrae il numero di caratteri corrispondente dall'inizio della stringa. Un carattere viene sottratto dal numero restituito da SEARCH per escludere il delimitatore dai risultati.

    Ad esempio, per rimuovere parte di una stringa dopo una virgola, si inserisce la formula seguente in B2 e la si trascina verso il basso fino a B7:

    =SINISTRA(A2, RICERCA(",", A2) -1)

    Come rimuovere tutto ciò che precede un carattere specifico

    Per eliminare una parte di una stringa di testo prima di un determinato carattere, la formula generica è:

    GIUSTO( cella , LEN( cella ) - RICERCA(" carbone ", cella ))

    In questo caso, calcoliamo nuovamente la posizione del carattere di destinazione con l'aiuto di SEARCH, la sottraiamo dalla lunghezza totale della stringa restituita da LEN e passiamo la differenza alla funzione RIGHT, in modo che estragga tanti caratteri dalla fine della stringa.

    Ad esempio, per rimuovere il testo prima di una virgola, la formula è:

    =DESTRA(A2, LEN(A2) - SEARCH(",", A2))

    Nel nostro caso, la virgola è seguita da uno spazio. Per evitare spazi iniziali nei risultati, avvolgiamo la formula principale nella funzione TRIM:

    =TRIM(RIGHT(A2, LEN(A2) - SEARCH(",", A2))

    Note:

    • Entrambi gli esempi sopra riportati presuppongono che ci sia solo un'istanza del delimitatore nella stringa originale. Se ci sono più occorrenze, il testo sarà rimosso prima/dopo il prima istanza .
    • La funzione di ricerca è non sensibile alle maiuscole , cioè non fa differenza tra caratteri minuscoli e maiuscoli. Se il carattere specifico è una lettera e si vuole distinguere il caso della lettera, utilizzare l'opzione sensibile alle maiuscole e alle minuscole Funzione FIND invece di SEARCH.

    Come eliminare il testo dopo l'ennesima occorrenza di un carattere

    Quando una stringa sorgente contiene più istanze del delimitatore, può essere necessario rimuovere il testo dopo un'istanza specifica. A tale scopo, utilizzare la formula seguente:

    SINISTRA( cella , FIND("#", SUBSTITUTE( cella , " carbone ", "#", n )) -1)

    Dove n è l'occorrenza del carattere dopo il quale rimuovere il testo.

    La logica interna di questa formula richiede l'uso di un carattere che non è presente nei dati di origine, nel nostro caso un simbolo di hash (#). Se questo carattere è presente nel vostro set di dati, usate qualcos'altro al posto di "#".

    Ad esempio, per rimuovere tutto ciò che si trova dopo la seconda virgola in A2 (e la virgola stessa), la formula è:

    =SINISTRA(A2, FIND("#", SUBSTITUTE(A2, ",", "#", 2)) -1)

    Come funziona questa formula:

    La parte fondamentale della formula è la funzione FIND che calcola la posizione dell'ennesimo delimitatore (la virgola nel nostro caso). Ecco come fare:

    Sostituiamo la seconda virgola in A2 con un simbolo di hash (o qualsiasi altro carattere non presente nei dati) con l'aiuto di SUBSTITUTE:

    SUBSTITUTE(A2, ",", "#", 2)

    La stringa risultante va al secondo argomento di FIND, quindi trova la posizione di "#" in quella stringa:

    FIND("#", "Emma, Design# (102) 123-4568")

    FIND ci dice che "#" è il 13° carattere della stringa. Per conoscere il numero di caratteri che lo precedono, è sufficiente sottrarre 1 e il risultato sarà 12:

    FIND("#", SUBSTITUTE(A2, ",", "#", 2)) - 1

    Questo numero va direttamente al num_caratteri di SINISTRA, chiedendo di estrarre i primi 12 caratteri da A2:

    =SINISTRA(A2, 12)

    Ecco fatto!

    Come eliminare il testo prima dell'ennesima occorrenza di un carattere

    La formula generica per rimuovere una sottostringa prima di un determinato carattere è:

    DESTRA(SOSTITUTO( cella , " carbone ", "#", n ), LEN( cella ) - FIND("#", SUBSTITUTE( cella , " carbone ", "#", n )) -1)

    Ad esempio, per eliminare il testo prima della seconda virgola in A2, la formula è:

    =DESTRA(SOSTITUTO(A2, ",", "#", 2), LEN(A2) - FIND("#", SOSTITUTO(A2, ",", "#", 2)) -1)

    Per eliminare uno spazio iniziale, utilizziamo nuovamente la funzione TRIM come wrapper:

    =TRIM(RIGHT(SUBSTITUTE(A2, ",", "#", 2), LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", 2))))

    Come funziona questa formula:

    In sintesi, scopriamo quanti caratteri ci sono dopo l'ennesimo delimitatore ed estraiamo da destra una sottostringa della lunghezza corrispondente. Di seguito è riportata la scomposizione della formula:

    Innanzitutto, sostituiamo la seconda virgola in A2 con un simbolo di hash:

    SUBSTITUTE(A2, ",", "#", 2)

    La stringa risultante va nella cartella testo argomento di DIRITTO:

    RIGHT("Emma, Design# (102) 123-4568", ...

    Successivamente, dobbiamo definire quanti caratteri estrarre dalla fine della stringa. Per questo, troviamo la posizione del simbolo hash nella stringa precedente (che è 13):

    FIND("#", SUBSTITUTE(A2, ",", "#", 2))

    E sottrarlo dalla lunghezza totale della stringa (che è uguale a 28):

    LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", 2))

    La differenza (15) va al secondo argomento di RIGHT, istruendolo a estrarre gli ultimi 15 caratteri dalla stringa del primo argomento:

    DIRITTO("Emma, Design# (102) 123-4568", 15)

    L'output è una sottostringa " (102) 123-4568", che si avvicina molto al risultato desiderato, tranne che per uno spazio iniziale. Utilizziamo quindi la funzione TRIM per eliminarlo.

    Come rimuovere il testo dopo l'ultima occorrenza di un carattere

    Nel caso in cui i valori siano separati da un numero variabile di delimitatori, è possibile rimuovere tutto ciò che si trova dopo l'ultima istanza di quel delimitatore. Questo può essere fatto con la seguente formula:

    SINISTRA( cella , FIND("#", SUBSTITUTE( cella , " carbone ", "#", LEN( cella ) - LEN(SOSTITUTO( cella , " carbone ", "")))) -1)

    Supponiamo che la colonna A contenga varie informazioni sui dipendenti, ma che il valore dopo l'ultima virgola sia sempre un numero di telefono. L'obiettivo è rimuovere i numeri di telefono e mantenere tutti gli altri dettagli.

    Per raggiungere l'obiettivo, è possibile rimuovere il testo dopo l'ultima virgola in A2 con questa formula:

    =SINISTRA(A2, FIND("#", SUBSTITUTE(A2, ",", "#", LEN(A2) - LEN(SUBSTITUTE(A2, ",","")))) -1)

    Copiate la formula lungo la colonna e otterrete questo risultato:

    Come funziona questa formula:

    Il succo della formula consiste nel determinare la posizione dell'ultimo delimitatore (virgola) nella stringa e nell'estrarre una sottostringa da sinistra fino al delimitatore. Ottenere la posizione del delimitatore è la parte più complicata ed ecco come gestirla:

    Per prima cosa, scopriamo quante virgole ci sono nella stringa originale. Per questo, sostituiamo ogni virgola con il nulla ("") e serviamo la stringa risultante alla funzione LEN:

    LEN(SOSTITUTO(A2, ",","))

    Per A2, il risultato è 35, ovvero il numero di caratteri in A2 senza virgole.

    Sottrarre il numero precedente dalla lunghezza totale della stringa (38 caratteri):

    LEN(A2) - LEN(SUBSTITUTE(A2, ",",""))

    ... e si otterrà 3, che è il numero totale di virgole in A2 (e anche il numero ordinale dell'ultima virgola).

    Successivamente, si utilizza la già nota combinazione delle funzioni FIND e SUBSTITUTE per ottenere la posizione dell'ultima virgola nella stringa. Il numero dell'istanza (la terza virgola nel nostro caso) viene fornito dalla formula LEN SUBSTITUTE di cui sopra:

    FIND("#", SUBSTITUTE(A2, ",", "#", 3))

    Sembra che la terza virgola sia il 23° carattere in A2, il che significa che dobbiamo estrarre i 22 caratteri che la precedono. Quindi, inseriamo la formula precedente meno 1 nel file num_caratteri argomento di SINISTRA:

    SINISTRA(A2, 23-1)

    Come rimuovere il testo prima dell'ultima occorrenza di un carattere

    Per eliminare tutto ciò che precede l'ultima istanza di un carattere specifico, la formula generica è:

    GIUSTO( cella , LEN( cella ) - FIND("#", SUBSTITUTE( cella , " carbone ", "#", LEN( cella ) - LEN(SOSTITUTO( cella , " carbone ", "")))))

    Nella nostra tabella di esempio, per eliminare il testo prima dell'ultima virgola, la formula assume questa forma:

    =RIGHT(A2, LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", LEN(A2) - LEN(SUBSTITUTE(A2, ",","")))))

    Come tocco finale, lo inseriamo nella funzione TRIM per eliminare gli spazi iniziali:

    =TRIM(RIGHT(A2, LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", LEN(A2) - LEN(SUBSTITUTE(A2, ",","))))))

    Come funziona questa formula:

    In sintesi, si ottiene la posizione dell'ultima virgola come spiegato nell'esempio precedente e la si sottrae dalla lunghezza totale della stringa:

    LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", LEN(A2) - LEN(SUBSTITUTE(A2, ",",""))))

    Come risultato, otteniamo il numero di caratteri dopo l'ultima virgola e lo passiamo alla funzione RIGHT, in modo che porti quel numero di caratteri dalla fine della stringa.

    Funzione personalizzata per rimuovere il testo su entrambi i lati di un carattere

    Come si è visto negli esempi precedenti, è possibile risolvere quasi tutti i casi d'uso utilizzando le funzioni native di Excel in diverse combinazioni. Il problema è che è necessario ricordare una manciata di formule complicate. E se scrivessimo una nostra funzione per coprire tutti gli scenari? Sembra una buona idea. Quindi, aggiungete il seguente codice VBA alla vostra cartella di lavoro (i passaggi dettagliati per inserire VBA in Excel sonoqui):

    Function RemoveText(str As String , delimiter As String , occurrence As Integer , is_after As Boolean ) Dim delimiter_num, start_num, delimiter_len As Integer Dim str_result As String delimiter_num = 0 start_num = 1 str_result = "" delimiter_len = Len(delimiter) For i = 1 To occurrence delimiter_num = InStr(start_num, str, delimiter, vbTextCompare) If 0 <delimiter_num Then start_num =delimiter_num + delimiter_len End If Next i If 0 <delimiter_num Then If True = is_after Then str_result = Mid(str, 1, start_num - delimiter_len - 1) Else str_result = Mid(str, start_num) End If End If RemoveText = str_result End Function

    La nostra funzione si chiama Rimuovi testo e ha la seguente sintassi:

    RemoveText(stringa, delimitatore, occorrenza, is_after)

    Dove:

    Stringa - è la stringa di testo originale. Può essere rappresentata da un riferimento di cella.

    Delimitatore - il carattere prima/dopo il quale rimuovere il testo.

    Occasione - l'istanza del delimitatore.

    È_dopo - un valore booleano che indica da quale parte del delimitatore rimuovere il testo. Può essere un singolo carattere o una sequenza di caratteri.

    • VERO - elimina tutto ciò che si trova dopo il delimitatore (compreso il delimitatore stesso).
    • FALSO - elimina tutto ciò che precede il delimitatore (compreso il delimitatore stesso).

    Una volta inserito il codice della funzione nella cartella di lavoro, è possibile rimuovere le sottostringhe dalle celle utilizzando formule compatte ed eleganti.

    Ad esempio, per cancellare tutto ciò che si trova dopo la prima virgola in A2, la formula in B2 è:

    =Rimuovi testo(A3, ", ", 1, VERO)

    Per eliminare tutto ciò che precede la prima virgola in A2, la formula in C2 è:

    =Rimuovi testo(A3, ", ", 1, FALSO)

    Poiché la nostra funzione personalizzata accetta un elemento per il delimitatore , mettiamo una virgola e uno spazio (", ") nel secondo argomento, per risparmiare la fatica di tagliare gli spazi iniziali in seguito.

    Ma se pensate che sia la soluzione completa, non avete ancora visto il prossimo esempio :)

    Cancellare tutto ciò che si trova prima, dopo o tra i caratteri

    Per avere ancora più opzioni per la rimozione di singoli caratteri o testo da più celle, per corrispondenza o posizione, aggiungete la nostra Ultimate Suite alla vostra cassetta degli attrezzi di Excel.

    In questa sede, analizzeremo più da vicino il Rimuovere per posizione situata sul pannello di controllo Dati Ablebits scheda> Testo gruppo> Rimuovere .

    Qui di seguito vengono illustrati i due scenari più comuni.

    Rimuovere tutto ciò che precede o segue un determinato testo

    Supponiamo che tutte le stringhe di origine contengano una parola o un testo comune e che si voglia cancellare tutto ciò che precede o segue quel testo. Per farlo, selezionare i dati di origine, eseguire il comando Rimuovere per posizione e configurarlo come mostrato di seguito:

    1. Selezionare la voce Tutti i caratteri prima del testo o Tutti i caratteri dopo il testo e digitare il testo della chiave (o il carattere) nella casella accanto.
    2. A seconda che le lettere maiuscole e minuscole debbano essere trattate come caratteri diversi o uguali, selezionare o deselezionare l'opzione Sensibile alle maiuscole e alle minuscole scatola.
    3. Colpire Rimuovere .

    In questo esempio, si rimuovono tutti i caratteri che precedono la parola "errore" nelle celle A2:A8:

    E ottenere esattamente il risultato che stiamo cercando:

    Rimuovere il testo tra due caratteri

    Se tra due caratteri specifici si trovano informazioni irrilevanti, ecco come eliminarle rapidamente:

    1. Scegliere Rimuovere tutte le sottostringhe e digitare due caratteri nelle caselle sottostanti.
    2. Se anche i caratteri "tra" devono essere rimossi, controllare l'opzione Inclusi i delimitatori scatola.
    3. Cliccare Rimuovere .

    Ad esempio, cancelliamo tutto ciò che è compreso tra due caratteri tilde (~) e otteniamo come risultato delle stringhe perfettamente pulite:

    Per provare le altre utili caratteristiche di questo strumento multifunzionale, vi invito a scaricare una versione di valutazione alla fine di questo post. Grazie per aver letto e spero di vedervi sul nostro blog la prossima settimana!

    Download disponibili

    Rimuovere i primi o gli ultimi caratteri - 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.