Elimina texto antes, despois ou entre dous caracteres en Excel

  • Comparte Isto
Michael Brown

Nos últimos artigos analizamos diferentes formas de eliminar caracteres das cadeas en Excel. Hoxe, investigaremos un caso de uso máis: como eliminar todo o que está antes ou despois dun carácter específico.

    Elimina texto antes, despois ou entre 2 caracteres con Buscar & Substituír

    Para manipular datos en varias celas, Buscar e substituír é a ferramenta correcta. Para eliminar parte dunha cadea que precede ou segue un carácter específico, estes son os pasos a realizar:

    1. Seleccione todas as celas onde quere eliminar texto.
    2. Preme Ctrl + H para abrir o diálogo Buscar e substituír .
    3. Na caixa Buscar o que , introduza unha das seguintes combinacións:
      • Para eliminar texto antes dun determinado carácter , escriba o carácter precedido dun asterisco (*char).
      • Para eliminar o texto despois dun determinado carácter , escriba o carácter seguido dun asterisco (char *).
      • Para eliminar unha subcadea entre dous caracteres , escriba un asterisco rodeado de 2 caracteres (char*char).
    4. Deixe o Substituír coa caixa baleira.
    5. Fai clic en Substituír todo .

    Por exemplo, para eliminar todo despois dunha coma , incluída a propia coma, pon unha coma e un asterisco (,*) na caixa Busca o que e obterás o seguinte resultado:

    Para eliminar unha subcadea antes dunha coma , escriba un asterisco, unha coma,todo despois da primeira coma en A2, a fórmula en B2 é:

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

    Para eliminar todo o que está antes da primeira coma en A2, a fórmula en C2 é:

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

    Dado que a nosa función personalizada acepta unha cadea para o delimitador , poñemos unha coma e un espazo (", ") no segundo argumento para evitar o problema de recortar os espazos iniciais despois.

    A nosa función personalizada funciona moi ben, non é? Pero se pensas que é a solución completa, aínda non viu o seguinte exemplo :)

    Elimine todo antes, despois ou entre os caracteres

    Para ter aínda máis opcións para eliminar caracteres individuais ou texto de varias celas, por coincidencia ou posición, engade a nosa Ultimate Suite á túa caixa de ferramentas de Excel.

    Aquí examinaremos máis detidamente a función Eliminar por posición situada na páxina Pestana Datos de Ablebits > Grupo de texto > Eliminar .

    A continuación, cubriremos os dous escenarios máis comúns.

    Elimina todo o que está antes ou despois de determinado texto

    Supoña que todas as cadeas de orixe conteñen algunha palabra ou texto común e queres eliminar todo o que hai antes ou despois dese texto. Para facelo, selecciona os teus datos de orixe, executa a ferramenta Eliminar por posición e configúraa como se mostra a continuación:

    1. Selecciona Todos os caracteres antes do texto ou a opción Todos os caracteres despois do texto e escriba o texto clave (ou carácter) na caixa seguintea ela.
    2. Segundo se as letras maiúsculas e minúsculas deben tratarse como caracteres diferentes ou iguais, marque ou desmarque a caixa Distingue entre maiúsculas e minúsculas .
    3. Prema Eliminar .

    Neste exemplo, eliminamos todos os caracteres que preceden á palabra "erro" nas celas A2:A8:

    E obtén exactamente o resultado que buscamos:

    Eliminar texto entre dous caracteres

    En situacións na que a información irrelevante está entre dous caracteres específicos, a continuación tes como pode eliminalo rapidamente:

    1. Escolla Eliminar todas as subcadeas e escriba dous caracteres nas caixas de abaixo.
    2. Se tamén se deben eliminar os caracteres "entre" , marque a caixa Incluíndo delimitadores .
    3. Faga clic en Eliminar .

    Como un exemplo, eliminamos todo o que hai entre dous caracteres tilde (~) e obtemos as cadeas perfectamente limpas como resultado:

    Para probar outras funcións útiles incluídas con este multifuncional ferramenta, anímovos a descargar un e versión de valoración ao final desta publicación. Grazas por ler e esperamos verte no noso blog a próxima semana!

    Descargas dispoñibles

    Eliminar primeiro ou último caracteres - exemplos (ficheiro .xlsm)

    Ultimate Suite - versión de proba (ficheiro .exe)

    e un espazo (*, ) no cadro Atopar o que.

    Ten en conta que non só estamos a substituír unha coma, senón tamén unha coma e un espazo para evitar que as liñas principais espazos nos resultados. Se os teus datos están separados por comas sen espazos, utiliza un asterisco seguido dunha coma (*,).

    Para eliminar texto entre dúas comas , use un asterisco rodeado de comas (,*,).

    Consello. Se prefire que os nomes e os números de teléfono sexan separados por coma, escriba unha coma (,) no campo Substituír por .

    Eliminar parte do texto mediante Flash Fill

    Nas versións modernas de Excel (2013 e posteriores), hai un xeito máis sinxelo de eliminar o texto que precede ou segue a un carácter específico: a función Flash Fill. Así é como funciona:

    1. Nunha cela xunto á primeira cela cos seus datos, escriba o resultado esperado e prema Intro .
    2. Comece a escribir un valor axeitado na seguinte cela. Unha vez que Excel sente o patrón nos valores que está a introducir, amosará unha vista previa das celas restantes seguindo o mesmo patrón.
    3. Preme a tecla Intro para aceptar a suxestión.

    Feito!

    Eliminar texto mediante fórmulas

    En Microsoft Excel, moitas manipulacións de datos realizadas mediante funcións integradas tamén se poden realizar cunha fórmula. A diferenza dos métodos anteriores, as fórmulas non fan ningún cambio nos datos orixinais e danche máis controlos resultados.

    Como eliminar todo despois dun carácter específico

    Para eliminar texto despois dun carácter concreto, a fórmula xenérica é:

    LEFT( celda , BUSCAR (" char ", cell ) -1)

    Aquí usamos a función SEARCH para obter a posición do carácter e pasala á función LEFT, para que extrae o número correspondente de caracteres desde o inicio da cadea. Réstase un carácter do número devolto por SEARCH para excluír o delimitador dos resultados.

    Por exemplo, para eliminar parte dunha cadea despois dunha coma, introduce a seguinte fórmula en B2 e arrástraa cara abaixo ata B7 :

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

    Como eliminar todo antes dun carácter específico

    Para eliminar parte dunha cadea de texto antes dun determinado carácter, A fórmula xenérica é:

    RIGHT( celda , LEN( celda ) - BUSCAR(" car ", celda ))

    Aquí, calculamos de novo a posición do carácter de destino coa axuda de SEARCH, réstao da lonxitude total da cadea devolta por LEN e pasamos a diferenza á función RIGHT, polo que extrae tantos caracteres do final do cadea.

    Por exemplo, para eliminar o texto antes dunha coma, a fórmula é:

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

    No noso caso, a coma vai seguida dun espazo. Para evitar espazos principais nos resultados, envolvemos a fórmula básica na función TRIM:

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

    Notas:

    • Ambosdos exemplos anteriores supoñen que só hai unha instancia do delimitador na cadea orixinal. Se hai varias ocorrencias, o texto eliminarase antes ou despois da primeira instancia .
    • A función de BUSCA non distingue entre maiúsculas e minúsculas , o que significa que non fai diferenza entre caracteres en minúsculas e maiúsculas. Se o teu carácter específico é unha letra e queres distinguir entre maiúsculas e minúsculas, utiliza a función distingue entre maiúsculas e minúsculas en lugar de BUSCAR.

    Como eliminar texto despois da enésima ocorrencia. dun carácter

    Na situación na que unha cadea de orixe contén varias instancias do delimitador, pode ter que eliminar o texto despois dunha instancia específica. Para iso, use a seguinte fórmula:

    LEFT( cell , FIND("#", SUBSTITUTE( cell , " char ", "#" , n )) -1)

    Onde n é a aparición do carácter despois da cal eliminar o texto.

    A lóxica interna desta fórmula require usar algún carácter que non está presente en ningún lugar dos datos de orixe, un símbolo hash (#) no noso caso. Se este carácter aparece no teu conxunto de datos, utiliza outra cousa en lugar de "#".

    Por exemplo, para eliminar todo despois da segunda coma en A2 (e da propia coma), a fórmula é:

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

    Como funciona esta fórmula:

    A parte clave da fórmula é a función FIND que calcula o posición da enésimadelimitador (coma no noso caso). Así é como:

    Substituímos a segunda coma en A2 por un símbolo hash (ou calquera outro carácter que non exista nos teus datos) coa axuda de SUBSTITUCIÓN:

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

    A cadea resultante vai ao segundo argumento de FIND, polo que atopa a posición de "#" nesa cadea:

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

    FIND indícanos que "#" é o carácter 13. na corda. Para saber o número de caracteres que o preceden, só resta 1 e obterás 12 como resultado:

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

    Este número vai directamente ao argumento num_chars de ESQUERDA pedíndolle que tire os primeiros 12 caracteres de A2:

    =LEFT(A2, 12)

    Isto é!

    Como eliminar texto antes da enésima aparición dun carácter

    A fórmula xenérica para eliminar unha subcadea antes dun determinado carácter é:

    RIGHT(SUBSTITUTE( cell , " char ", "#", n ), LEN( celda ) - FIND("#", SUBSTITUTE( celda , " car ", "#", n )) -1)

    Por exemplo, para eliminar o texto antes da segunda coma en A2, a fórmula é:

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

    Para eliminar un espazo inicial, usamos de novo o TRIM Funciona como envoltorio:

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

    Como funciona esta fórmula:

    En resumo, descubrimos cantos caracteres hai despois do enésimo delimitador e extrae desde a dereita unha subcadea da lonxitude correspondente. A continuación móstrase a fórmula:

    Primeiro, substituímos a segunda coma en A2 por un hashsímbolo:

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

    A cadea resultante vai ao argumento texto de RIGHT:

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

    A continuación, necesitamos define cantos caracteres extraer do final da cadea. Para iso, atopamos a posición do símbolo hash na cadea anterior (que é 13):

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

    E réstao da lonxitude total da cadea (que é igual a 28):

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

    A diferenza (15) vai para o segundo argumento de RIGHT instruíndolle que tire os últimos 15 caracteres da cadea do primeiro argumento:

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

    A saída é unha subcadea " (102) 123-4568", que está moi preto do resultado desexado, excepto un espazo inicial. Entón, usamos a función TRIM para desfacerse dela.

    Como eliminar texto despois da última aparición dun carácter

    No caso de que os seus valores estean separados cun número variable de delimitadores, pode querer eliminar todo despois da última instancia dese delimitador. Isto pódese facer coa seguinte fórmula:

    LEFT( cell , FIND("#", SUBSTITUTE( cell , " char ", "# ", LEN( celda ) - LEN(SUBSTITUTE( celda , " car ", "")))) -1)

    Supoña que a columna A contén diversa información sobre os empregados, pero o valor despois da última coma é sempre un número de teléfono. O teu obxectivo é eliminar os números de teléfono e conservar todos os demais detalles.

    Para conseguir o obxectivo, podes eliminar o texto despois da última coma en A2 con isto.fórmula:

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

    Copia a fórmula na columna e obterás este resultado:

    Como isto a fórmula funciona:

    O principal da fórmula é que determinamos a posición do último delimitador (coma) na cadea e tiramos unha subcadea desde a esquerda ata o delimitador. Obter a posición do delimitador é a parte máis complicada, e así é como a manexamos:

    Primeiro, descubrimos cantas comas hai na cadea orixinal. Para iso, substituímos cada coma por nada ("") e servimos a cadea resultante á función LEN:

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

    Para A2, o resultado é 35, que é o número de caracteres. en A2 sen comas.

    Resta o número anterior da lonxitude total da cadea (38 caracteres):

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

    ... e obterás 3, que é o número total de comas en A2 (e tamén o número ordinal da última coma).

    A continuación, usa a xa familiar combinación das funcións BUSCAR e SUBSTITUIR para obter a posición da última coma na cadea. O número de instancia (terceira coma no noso caso) é proporcionado pola fórmula LEN SUBSTITUTE anteriormente mencionada:

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

    Parece que a terceira coma é o carácter 23 en A2, o que significa que necesitamos para extraer 22 caracteres anteriores. Entón, poñemos a fórmula anterior menos 1 no argumento num_chars de LEFT:

    LEFT(A2, 23-1)

    Como eliminar texto antes da última aparición dun carácter

    Para eliminartodo antes da última instancia dun carácter específico, a fórmula xenérica é:

    RIGHT( cell , LEN( cell ) - FIND("#", SUBSTITUTE( cela , " car ", "#", LEN( cel ) - LEN(SUBSTITUTE( cel , " car ", "")))))

    Na nosa táboa de mostra, para eliminar o texto antes da última coma, a fórmula toma esta forma:

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

    Como toque final, anídao na función TRIM para eliminar os espazos principais:

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

    Como funciona esta fórmula:

    En resumo, obtemos a posición da última coma tal e como se explica no exemplo anterior e restalla da lonxitude total da cadea:

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

    Como resultado, obtemos o número de caracteres despois da última coma e pásaa á función DEREITA, polo que trae tantos caracteres desde o final da cadea.

    Función personalizada para eliminar texto a cada lado dun carácter

    Como que viches nos exemplos anteriores, podes resolver case calquera caso de uso usando o f nativo de Excel uncións en diferentes combinacións. O problema é que cómpre lembrar un puñado de fórmulas complicadas. Hmm, e se escribimos a nosa propia función para cubrir todos os escenarios? Parece unha boa idea. Entón, engade o seguinte código VBA ao teu libro de traballo (os pasos detallados para inserir VBA en Excel están aquí):

    Función 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(delimiter) For i = 1 To occurrence delimiter_num = InStr(start_delimiter, vstr. < delimiter_num Entón 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

    A nosa función chámase RemoveText e ten a seguinte sintaxe:

    RemoveText(cadea, delimitador, ocorrencia, is_after)

    Onde:

    Cadea - é a cadea de texto orixinal. Pódese representar mediante unha referencia de cela.

    Delimitador : o carácter antes/despois do cal eliminar o texto.

    Ocurrencia : a instancia do delimitador.

    Is_after - un valor booleano que indica en que lado do delimitador se debe eliminar o texto. Pode ser un só carácter ou unha secuencia de caracteres.

    • VERDADEIRO: borra todo despois do delimitador (incluído o propio delimitador).
    • FALSO: elimina todo o que está antes do delimitador (incluído o delimitador). delimitador).

    Unha vez inserido o código da función no seu libro de traballo, pode eliminar subcadeas das celas mediante fórmulas compactas e elegantes.

    Por exemplo, para borrar

    Michael Brown é un entusiasta da tecnoloxía dedicada á súa paixón por simplificar procesos complexos mediante ferramentas de software. Con máis dunha década de experiencia na industria tecnolóxica, perfeccionou as súas habilidades en Microsoft Excel e Outlook, así como en Follas de cálculo e Documentos de Google. O blog de Michael está dedicado a compartir o seu coñecemento e experiencia con outros, proporcionando consellos e titoriais fáciles de seguir para mellorar a produtividade e a eficiencia. Tanto se es un profesional experimentado como un principiante, o blog de Michael ofrece valiosas ideas e consellos prácticos para sacar o máximo proveito destas ferramentas de software esenciais.