Eliminar el text abans, després o entre dos caràcters a Excel

  • Comparteix Això
Michael Brown

En els darrers articles, hem analitzat diferents maneres d'eliminar caràcters de les cadenes a Excel. Avui, investigarem un cas d'ús més: com esborrar tot el que hi ha abans o després d'un caràcter específic.

    Suprimeix el text abans, després o entre 2 caràcters amb Cerca & Reemplaça

    Per a la manipulació de dades en diverses cel·les, Cerca i substitueix és l'eina adequada. Per eliminar part d'una cadena que precedeix o segueix un caràcter específic, aquests són els passos a seguir:

    1. Seleccioneu totes les cel·les on voleu suprimir el text.
    2. Premeu Ctrl + H. per obrir el diàleg Cerca i substitueix .
    3. Al quadre Cerca què , introduïu una de les combinacions següents:
      • Per eliminar el text davant d'un caràcter determinat , escriviu el caràcter precedit d'un asterisc (*car).
      • Per eliminar el text després d'un caràcter determinat , escriviu el caràcter seguit d'un asterisc (car *).
      • Per suprimir una subcadena entre dos caràcters , escriviu un asterisc envoltat de 2 caràcters (char*char).
    4. Deixeu el Substitueix amb el quadre buit.
    5. Feu clic a Substitueix-ho tot .

    Per exemple, per eliminar tot després d'una coma , inclosa la pròpia coma, poseu una coma i un signe d'asterisc (,*) al quadre Cerca què i obtindreu el resultat següent:

    Per suprimir una subcadena davant d'una coma , escriviu un asterisc, una coma,tot després de la 1a coma a A2, la fórmula a B2 és:

    =RemoveText(A3, ", ", 1, TRUE)

    Per esborrar tot abans de la 1a coma a A2, la fórmula a C2 és:

    =RemoveText(A3, ", ", 1, FALSE)

    Com que la nostra funció personalitzada accepta una cadena per al delimitador , posem una coma i un espai (", ") al segon argument per evitar el problema de retallar els espais inicials després.

    La nostra funció personalitzada funciona molt bé, no? Però si creieu que és la solució completa, encara no heu vist el següent exemple :)

    Elimineu-ho tot abans, després o entre caràcters

    Per obtenir encara més opcions per eliminar caràcters individuals o text de diverses cel·les, per coincidència o posició, afegiu la nostra Ultimate Suite a la vostra caixa d'eines d'Excel.

    Aquí, veurem més de prop la funció Elimina per posició ubicada a Pestanya Ablebits Data > Grup de text > Elimina .

    A continuació, tractarem els dos escenaris més habituals.

    Elimineu tot el que hi ha abans o després de cert text

    Suposem que totes les vostres cadenes d'origen contenen alguna paraula o text comú i voleu suprimir-ho tot abans o després d'aquest text. Per fer-ho, seleccioneu les vostres dades d'origen, executeu l'eina Elimina per posició i configureu-la com es mostra a continuació:

    1. Seleccioneu Tots els caràcters abans del text o Tots els caràcters després del text i escriviu el text clau (o caràcter) al quadre següent
    2. Depenent de si les majúscules i les minúscules s'han de tractar com a caràcters diferents o iguals, marqueu o desmarqueu la casella Distingeix entre majúscules i minúscules .
    3. Premeu Elimina .

    En aquest exemple, estem eliminant tots els caràcters que precedeixen la paraula "error" a les cel·les A2:A8:

    I obteniu exactament el resultat que busquem:

    Elimineu el text entre dos caràcters

    En la situació en què la informació irrellevant es troba entre dos caràcters específics, a continuació us indiquem com podeu suprimir-lo ràpidament:

    1. Seleccioneu Elimina totes les subcadenes i escriviu dos caràcters als quadres següents.
    2. Si també s'han d'eliminar els caràcters "entre" , marqueu la casella Incloent delimitadors .
    3. Feu clic a Elimina .

    Com un exemple, suprimim tot el que hi ha entre dos caràcters de tilde (~) i obtenim les cadenes perfectament netes com a resultat:

    Per provar altres funcions útils incloses amb aquest multifuncional eina, us animo a descarregar-vos un e versió de valoració al final d'aquesta publicació. Gràcies per llegir-nos i esperem veure't al nostre blog la setmana vinent!

    Descàrregues disponibles

    Elimina els primers o els últims caràcters: exemples (fitxer .xlsm)

    Ultimate Suite - versió de prova (fitxer .exe)

    i un espai (*, ) al quadre Troba què.

    Tingueu en compte que no només estem substituint una coma sinó una coma i un espai per evitar que els primers. espais als resultats. Si les vostres dades estan separades per comes sense espais, feu servir un asterisc seguit d'una coma (*,).

    Per suprimir el text entre dues comes , utilitzeu un asterisc envoltat de comes (,*,).

    Consell. Si preferiu que els noms i els números de telèfon estiguin separats per una coma, escriviu una coma (,) al camp Substitueix per .

    Elimineu part del text mitjançant Flash Fill

    En les versions modernes d'Excel (2013 i posteriors), hi ha una manera més senzilla d'eradicar el text que precedeix o segueix un caràcter específic: la funció Flash Fill. Així és com funciona:

    1. En una cel·la al costat de la primera cel·la amb les vostres dades, escriviu el resultat esperat i premeu Intro .
    2. Comenceu a escriure un valor adequat a la cel·la següent. Quan Excel noti el patró als valors que esteu introduint, mostrarà una vista prèvia de les cel·les restants seguint el mateix patró.
    3. Premeu la tecla Intro per acceptar el suggeriment.

    Fet!

    Elimineu el text mitjançant fórmules

    A Microsoft Excel, moltes manipulacions de dades realitzades mitjançant funcions integrades també es poden fer amb una fórmula. A diferència dels mètodes anteriors, les fórmules no fan cap canvi a les dades originals i us ofereixen més controlels resultats.

    Com eliminar tot després d'un caràcter específic

    Per suprimir text després d'un caràcter concret, la fórmula genèrica és:

    ESQUERRA( cel·la , CERCAR (" char ", cell ) -1)

    Aquí, utilitzem la funció SEARCH per obtenir la posició del caràcter i passar-lo a la funció LEFT, de manera que extreu el nombre corresponent de caràcters des de l'inici de la cadena. Es resta un caràcter del nombre que retorna SEARCH per excloure el delimitador dels resultats.

    Per exemple, per eliminar part d'una cadena després d'una coma, introduïu la fórmula següent a B2 i arrossegueu-la cap avall per B7. :

    =LEFT(A2, SEARCH(",", A2) -1)

    Com eliminar tot abans d'un caràcter específic

    Per suprimir part d'una cadena de text abans d'un caràcter determinat, La fórmula genèrica és:

    RIGHT( cel·la , LEN( cel·la ) - SEARCH(" car ", cel·la ))

    Aquí, tornem a calcular la posició del caràcter objectiu amb l'ajuda de SEARCH, la restem de la longitud total de la cadena retornada per LEN i passem la diferència a la funció DRET, de manera que tregui tants caràcters del final de la cadena.

    Per exemple, per eliminar el text abans d'una coma, la fórmula és:

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

    En el nostre cas, la coma va seguida d'un espai. Per evitar espais inicials als resultats, emboliquem la fórmula bàsica a la funció TRIM:

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

    Notes:

    • Tots dosdels exemples anteriors suposa que només hi ha una instància del delimitador a la cadena original. Si hi ha diverses ocurrències, el text s'eliminarà abans/després de la primera instància .
    • La funció de cerca no distingeix entre majúscules i minúscules , és a dir, no fa cap diferència entre caràcters en majúscules i minúscules. Si el vostre caràcter específic és una lletra i voleu distingir entre majúscules i minúscules, feu servir la funció distingeix entre majúscules i minúscules en lloc de CERCAR.

    Com esborrar el text després de l'enèsima ocurrència. d'un caràcter

    En una situació en què una cadena d'origen conté diverses instàncies del delimitador, és possible que hàgiu de suprimir el text després d'una instància específica. Per fer-ho, utilitzeu la fórmula següent:

    LEFT( cel·la , FIND("#", SUBSTITUTE( cel·la , " car ", "#" , n )) -1)

    On n és l'aparició del caràcter després de la qual s'ha d'eliminar el text.

    La lògica interna d'aquesta fórmula requereix utilitzar algun caràcter. que no està present en cap part de les dades font, un símbol hash (#) en el nostre cas. Si aquest caràcter apareix al vostre conjunt de dades, feu servir una altra cosa en lloc de "#".

    Per exemple, per eliminar tot el que hi ha després de la segona coma en A2 (i la coma en si), la fórmula és:

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

    Com funciona aquesta fórmula:

    La part clau de la fórmula és la funció TROBA que calcula el posició de l'enèsimadelimitador (coma en el nostre cas). Així és com:

    Substituïm la segona coma en A2 per un símbol hash (o qualsevol altre caràcter que no existeixi a les vostres dades) amb l'ajuda de SUBSTITUTE:

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

    La cadena resultant va al segon argument de FIND, de manera que troba la posició de "#" en aquesta cadena:

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

    FIND ens diu que "#" és el tretzè caràcter a la corda. Per saber el nombre de caràcters que el precedeixen, només resteu 1 i obtindreu 12 com a resultat:

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

    Aquest nombre va directament a l'argument num_chars de L'ESQUERRA demanant-li que tregui els 12 primers caràcters de A2:

    =LEFT(A2, 12)

    Això és tot!

    Com esborrar text abans de l'enèsima ocurrència d'un caràcter

    La fórmula genèrica per eliminar una subcadena abans d'un caràcter determinat és:

    RIGHT(SUBSTITUTE( cel·la , " car ", "#", n ), LEN( cel·la ) - FIND("#", SUBSTITUTE( cel·la , " car ", "#", n )) -1)

    Per exemple, per eliminar el text abans de la segona coma en A2, la fórmula és:

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

    Per eliminar un espai inicial, tornem a utilitzar el TRIM funcionar com a embolcall:

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

    Com funciona aquesta fórmula:

    En resum, descobrim quants caràcters hi ha després del delimitador enèsimo i extreu una subcadena de la longitud corresponent de la dreta. A continuació es mostra la fórmula desglossada:

    Primer, substituïm la segona coma a A2 per un hashsímbol:

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

    La cadena resultant va a l'argument text de RIGHT:

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

    A continuació, hem de defineix quants caràcters cal extreure del final de la cadena. Per a això, trobem la posició del símbol hash a la cadena anterior (que és 13):

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

    I la resta de la longitud total de la cadena (que és igual a 28):

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

    La diferència (15) va al segon argument de DRET i li indica que extreu els darrers 15 caràcters de la cadena del primer argument:

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

    La sortida és una subcadena "(102) 123-4568", que és molt propera al resultat desitjat, excepte un espai inicial. Per tant, utilitzem la funció TRIM per desfer-se'n.

    Com eliminar text després de l'última aparença d'un caràcter

    En cas que els vostres valors estiguin separats amb un nombre variable de delimitadors, potser voldreu eliminar-ho tot després de l'última instància d'aquest delimitador. Això es pot fer amb la fórmula següent:

    LEFT( cell , FIND("#", SUBSTITUTE( cell , " char ", "# ", LEN( cel·la ) - LEN(SUBSTITUTE( cel·la , " car ", "")))) -1)

    Suposem que la columna A conté informació diversa sobre els empleats, però el valor després de l'última coma sempre és un número de telèfon. El vostre objectiu és eliminar els números de telèfon i conservar la resta de detalls.

    Per aconseguir l'objectiu, podeu eliminar el text després de l'última coma en A2 amb aixòfórmula:

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

    Copieu la fórmula a la columna i obtindreu aquest resultat:

    Com això La fórmula funciona:

    L'essència de la fórmula és que determinem la posició de l'últim delimitador (coma) a la cadena i tirem una subcadena d'esquerra cap amunt fins al delimitador. Aconseguir la posició del delimitador és la part més complicada, i així és com ho gestionem:

    Primer, descobrim quantes comes hi ha a la cadena original. Per a això, substituïm cada come amb res ("") i servim la cadena resultant a la funció LEN:

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

    Per a A2, el resultat és 35, que és el nombre de caràcters. en A2 sense comes.

    Resta el nombre anterior de la longitud total de la cadena (38 caràcters):

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

    ... i obtindreu 3, que és el nombre total de comes a A2 (i també el número ordinal de l'última coma).

    A continuació, utilitzeu la ja familiar combinació de les funcions TROBAR i SUBSTITUIR per obtenir la posició de l'última coma a la cadena. El número d'instància (tercera coma en el nostre cas) es proporciona amb la fórmula LEN SUBSTITUTE esmentada anteriorment:

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

    Sembla que la tercera coma és el caràcter 23 en A2, el que significa que necessitem per extreure 22 caràcters anteriors. Per tant, posem la fórmula anterior menys 1 a l'argument num_chars de LEFT:

    LEFT(A2, 23-1)

    Com eliminar el text abans de l'última ocurrència d'un caràcter

    Per esborrartot abans de l'última instància d'un caràcter específic, la fórmula genèrica és:

    DRET( cel·la , LEN( cel·la ) - TROBAR("#", SUBSTITUT( cel·la , " car ", "#", LEN( cel·la ) - LEN(SUBSTITUTE( cel·la , " car ", "")))))

    A la nostra taula de mostra, per eradicar el text abans de l'última coma, la fórmula pren aquesta forma:

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

    Com a toc final, niu-lo a la funció TRIM per eliminar els espais inicials:

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

    Com funciona aquesta fórmula:

    En resum, obtenim la posició de l'última coma tal com s'explica a l'exemple anterior i la restem de la longitud total de la cadena:

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

    Com a resultat, obtenim el nombre de caràcters després de l'última coma i passa-ho a la funció DRET, de manera que trau tants caràcters des del final de la cadena.

    Funció personalitzada per eliminar text a banda i banda d'un caràcter

    Com que heu vist als exemples anteriors, podeu resoldre gairebé qualsevol cas d'ús utilitzant el f natiu d'Excel uncions en diferents combinacions. El problema és que cal recordar un grapat de fórmules complicades. Hmm, què passa si escrivim la nostra pròpia funció per cobrir tots els escenaris? Sembla una bona idea. Per tant, afegiu el codi VBA següent al vostre llibre de treball (els passos detallats per inserir VBA a Excel són aquí):

    Funció RemoveText(str As String , delimiter As String , occurrence As Integer , is_after AsBoolean ) 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 (delimitador) For i = 1 To occurrence delimiter_num = InStr(start_delimiter, vstr. < delimiter_num Aleshores 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 funció s'anomena RemoveText i té la sintaxi següent:

    RemoveText(string, delimiter, occurrence, is_after)

    On:

    String - és la cadena de text original. Es pot representar amb una referència de cel·la.

    Delimitador : el caràcter abans/després del qual cal eliminar el text.

    Ocurrència : la instància de la delimitador.

    Is_after : un valor booleà que indica a quin costat del delimitador cal eliminar el text. Pot ser un sol caràcter o una seqüència de caràcters.

    • VERTADER: suprimeix tot el que hi ha després del delimitador (inclòs el propi delimitador).
    • FALS: suprimeix tot el que hi ha abans del delimitador (inclòs el delimitador). delimitador).

    Un cop inserit el codi de la funció al vostre llibre de treball, podeu eliminar les subcadenes de les cel·les mitjançant fórmules compactes i elegants.

    Per exemple, per esborrar

    Michael Brown és un entusiasta de la tecnologia dedicat amb una passió per simplificar processos complexos mitjançant eines de programari. Amb més d'una dècada d'experiència en la indústria tecnològica, ha perfeccionat les seves habilitats en Microsoft Excel i Outlook, així com en Google Sheets i Docs. El bloc de Michael es dedica a compartir els seus coneixements i experiència amb altres persones, oferint consells i tutorials fàcils de seguir per millorar la productivitat i l'eficiència. Tant si sou un professional experimentat com si sou un principiant, el bloc de Michael ofereix valuoses idees i consells pràctics per treure el màxim profit d'aquestes eines de programari essencials.