Tabla de contenido
En los últimos dos artículos, hemos visto diferentes formas de eliminar caracteres de cadenas en Excel. Hoy, investigaremos un caso de uso más: cómo eliminar todo lo que está antes o después de un carácter específico.
Borrar texto antes, después o entre 2 caracteres con Buscar & Reemplazar
Para manipular datos en varias celdas, Buscar y reemplazar es la herramienta adecuada. Para eliminar parte de una cadena que precede o sigue a un carácter específico, estos son los pasos a realizar:
- Seleccione todas las celdas en las que desee borrar texto.
- Pulse Ctrl + H para abrir el Buscar y reemplazar diálogo.
- En el Encuentre lo que introduzca una de las siguientes combinaciones:
- Eliminar texto antes de un carácter determinado escriba el carácter precedido de un asterisco (*char).
- Para eliminar texto después de cierto carácter escriba el carácter seguido de un asterisco (char*).
- Para eliminar una subcadena entre dos personajes escriba un asterisco rodeado de 2 caracteres (char*char).
- Deje el Sustituir con caja vacía.
- Haga clic en Sustituir todo .
Por ejemplo, para eliminar todo lo que va después de una coma incluida la propia coma, coloque una coma y un signo de asterisco (,*) en el campo Encuentre lo que y obtendrá el siguiente resultado:
Para eliminar una subcadena antes de una coma escriba un asterisco, una coma y un espacio (*, ) en el campo Encuentre lo que caja.
Obsérvese que estamos sustituyendo no sólo una coma sino una coma y un espacio Si los datos están separados por comas sin espacios, utilice un asterisco seguido de una coma (*,).
Para borrar texto entre dos comas utilice un asterisco rodeado de comas (,*,).
Consejo: si prefiere que los nombres y los números de teléfono estén separados por una coma, escriba una coma (,) en el campo Sustituir por campo.
Eliminar parte del texto con Flash Fill
En las versiones modernas de Excel (2013 y posteriores), hay una forma más fácil de erradicar el texto que precede o sigue a un carácter específico: la función Relleno Flash. Así es como funciona:
- En una celda situada junto a la primera celda con sus datos, escriba el resultado esperado y pulse Intro .
- Comience a escribir un valor apropiado en la siguiente celda. Una vez que Excel perciba el patrón en los valores que está introduciendo, mostrará una vista previa de las celdas restantes que siguen el mismo patrón.
- Pulsa la tecla Intro para aceptar la sugerencia.
¡Hecho!
Eliminar texto mediante fórmulas
En Microsoft Excel, muchas de las manipulaciones de datos que se realizan mediante las funciones incorporadas también pueden llevarse a cabo con una fórmula. A diferencia de los métodos anteriores, las fórmulas no realizan ningún cambio en los datos originales y le ofrecen un mayor control sobre los resultados.
Cómo eliminar todo lo que aparece después de un carácter específico
Para borrar texto después de un carácter determinado, la fórmula genérica es:
IZQUIERDA( célula BUSCAR(" char ", célula ) -1)Aquí, utilizamos la función BUSCAR para obtener la posición del carácter y la pasamos a la función IZQUIERDA, para que extraiga el número de caracteres correspondiente del inicio de la cadena. Se resta un carácter al número devuelto por BUSCAR para excluir el delimitador de los resultados.
Por ejemplo, para eliminar parte de una cadena después de una coma, introduzca la siguiente fórmula en B2 y arrástrela hacia abajo hasta B7:
=LEFT(A2, SEARCH(",", A2) -1)
Cómo eliminar todo lo que precede a un carácter específico
Para borrar parte de una cadena de texto antes de un carácter determinado, la fórmula genérica es:
CORRECTO( célula LEN( célula ) - BUSCAR(" char ", célula ))Aquí, de nuevo calculamos la posición del carácter objetivo con la ayuda de BUSCAR, la restamos de la longitud total de la cadena devuelta por LEN, y pasamos la diferencia a la función DERECHA, para que extraiga esa cantidad de caracteres del final de la cadena.
Por ejemplo, para eliminar texto antes de una coma, la fórmula es:
=RIGHT(A2, LEN(A2) - SEARCH(",", A2))
En nuestro caso, la coma va seguida de un espacio. Para evitar espacios a la izquierda en los resultados, envolvemos la fórmula central en la función TRIM:
=TRIM(RIGHT(A2, LEN(A2) - SEARCH(",", A2))
Notas:
- Ambos ejemplos suponen que sólo hay un caso del delimitador en la cadena original. Si hay varias ocurrencias, el texto se eliminará antes/después del primer caso .
- La función BUSCAR es no distingue mayúsculas de minúsculas es decir, no distingue entre minúsculas y mayúsculas. Si su carácter específico es una letra y desea distinguir entre mayúsculas y minúsculas, utilice la función distingue entre mayúsculas y minúsculas Función BUSCAR en lugar de BUSCAR.
Cómo borrar texto después de la enésima aparición de un carácter
En situaciones en las que una cadena de origen contiene varias instancias del delimitador, es posible que necesite eliminar texto después de una instancia específica. Para ello, utilice la siguiente fórmula:
IZQUIERDA( célula FIND("#", SUBSTITUTE( célula , " char ", "#", n )) -1)Dónde n es la aparición del carácter a partir de la cual se eliminará el texto.
La lógica interna de esta fórmula requiere el uso de un carácter que no está presente en ningún lugar de los datos de origen, un símbolo de almohadilla (#) en nuestro caso. Si este carácter aparece en su conjunto de datos, utilice otro en lugar de "#".
Por ejemplo, para eliminar todo lo que hay después de la 2ª coma en A2 (y la propia coma), la fórmula es:
=LEFT(A2, FIND("#", SUBSTITUTE(A2, ",", "#", 2)) -1)
Cómo funciona esta fórmula:
La parte clave de la fórmula es la función FIND que calcula la posición del enésimo delimitador (coma en nuestro caso). He aquí cómo:
Sustituimos la 2ª coma de A2 por un símbolo de almohadilla (o cualquier otro carácter que no exista en sus datos) con la ayuda de SUBSTITUTE:
SUBSTITUTE(A2, ",", "#", 2)
La cadena resultante va al 2º argumento de FIND, por lo que encuentra la posición de "#" en esa cadena:
FIND("#", "Emma, Diseño# (102) 123-4568")
FIND nos dice que "#" es el decimotercer carácter de la cadena. Para saber el número de caracteres que le preceden, basta con restar 1, y obtendremos 12 como resultado:
FIND("#", SUBSTITUTE(A2, ",", "#", 2)) - 1
Este número va directamente al num_chars de IZQUIERDA pidiéndole que extraiga los 12 primeros caracteres de A2:
=LEFT(A2, 12)
¡Ya está!
Cómo borrar texto antes de la enésima aparición de un carácter
La fórmula genérica para eliminar una subcadena antes de un carácter determinado es:
DERECHA(SUSTITUIR( célula , " char ", "#", n ), LEN( célula ) - FIND("#", SUBSTITUTE( célula , " char ", "#", n )) -1)Por ejemplo, para eliminar el texto antes de la segunda coma en A2, la fórmula es:
=RIGHT(SUBSTITUTE(A2, ",", "#", 2), LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", 2)) -1)
Para eliminar un espacio inicial, volvemos a utilizar la función TRIM como envoltorio:
=TRIM(RIGHT(SUBSTITUTE(A2, ",", "#", 2), LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", 2))))
Cómo funciona esta fórmula:
En resumen, averiguamos cuántos caracteres hay después del enésimo delimitador y extraemos de la derecha una subcadena de la longitud correspondiente. A continuación se desglosa la fórmula:
En primer lugar, sustituimos la segunda coma de A2 por un símbolo de almohadilla:
SUBSTITUTE(A2, ",", "#", 2)
La cadena resultante va a texto argumento de DERECHO:
RIGHT("Emma, Diseño# (102) 123-4568", ...
A continuación, tenemos que definir cuántos caracteres extraer del final de la cadena. Para ello, buscamos la posición del símbolo hash en la cadena anterior (que es 13):
FIND("#", SUBSTITUTE(A2, ",", "#", 2))
Y réstalo de la longitud total de la cadena (que es igual a 28):
LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", 2))
La diferencia (15) va al segundo argumento de RIGHT indicándole que extraiga los últimos 15 caracteres de la cadena del primer argumento:
RIGHT("Emma, Design# (102) 123-4568", 15)
La salida es una subcadena " (102) 123-4568", que se aproxima mucho al resultado deseado, salvo por un espacio inicial. Así pues, utilizamos la función TRIM para deshacernos de él.
Cómo eliminar texto después de la última aparición de un carácter
En caso de que los valores estén separados por un número variable de delimitadores, es posible que desee eliminar todo lo que se encuentre después del último caso de ese delimitador. Esto se puede hacer con la siguiente fórmula:
IZQUIERDA( célula FIND("#", SUBSTITUTE( célula , " char ", "#", LEN( célula ) - LEN(SUSTITUTO( célula , " char ", "")))) -1)Supongamos que la columna A contiene información diversa sobre los empleados, pero el valor que aparece tras la última coma es siempre un número de teléfono. Su objetivo es eliminar los números de teléfono y conservar el resto de datos.
Para lograr el objetivo, puede eliminar el texto después de la última coma en A2 con esta fórmula:
=LEFT(A2, FIND("#", SUBSTITUTE(A2, ",", "#", LEN(A2) - LEN(SUBSTITUTE(A2, ",","")))) -1)
Copia la fórmula en la columna y obtendrás este resultado:
Cómo funciona esta fórmula:
La esencia de la fórmula es que determinamos la posición del último delimitador (coma) en la cadena y extraemos una subcadena desde la izquierda hasta el delimitador. Obtener la posición del delimitador es la parte más complicada, y así es como la manejamos:
En primer lugar, averiguamos cuántas comas hay en la cadena original. Para ello, sustituimos cada coma por nada ("") y servimos la cadena resultante a la función LEN:
LEN(SUBSTITUTE(A2, ",",""))
Para A2, el resultado es 35, que es el número de caracteres de A2 sin comas.
Reste el número anterior a la longitud total de la cadena (38 caracteres):
LEN(A2) - LEN(SUBSTITUTE(A2, ",",""))
... y obtendrás 3, que es el número total de comas en A2 (y también el número ordinal de la última coma).
A continuación, se utiliza la ya conocida combinación de las funciones BUSCAR y SUSTITUIR para obtener la posición de la última coma en la cadena. El número de instancia (3ª coma en nuestro caso) se suministra mediante la fórmula LEN SUBSTITUIR antes mencionada:
FIND("#", SUBSTITUTE(A2, ",", "#", 3))
Parece que la tercera coma es el carácter número 23 de A2, lo que significa que tenemos que extraer los 22 caracteres que la preceden. Así pues, ponemos la fórmula anterior menos 1 en el campo num_chars argumento de IZQUIERDA:
IZQUIERDA(A2, 23-1)
Cómo eliminar texto antes de la última aparición de un carácter
Para borrar todo lo anterior a la última instancia de un carácter específico, la fórmula genérica es:
CORRECTO( célula LEN( célula ) - FIND("#", SUBSTITUTE( célula , " char ", "#", LEN( célula ) - LEN(SUSTITUTO( célula , " char ", "")))))En nuestra tabla de ejemplo, para erradicar el texto antes de la última coma, la fórmula adopta esta forma:
=RIGHT(A2, LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", LEN(A2) - LEN(SUBSTITUTE(A2, ",","")))))
Como toque final, lo anidamos en la función TRIM para eliminar los espacios intermedios:
=TRIM(RIGHT(A2, LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", LEN(A2) - LEN(SUBSTITUTE(A2, ",",""))))))
Cómo funciona esta fórmula:
En resumen, obtenemos la posición de la última coma como se explica en el ejemplo anterior y la restamos de la longitud total de la cadena:
LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", LEN(A2) - LEN(SUBSTITUTE(A2, ",",""))))
Como resultado, obtenemos el número de caracteres después de la última coma y se lo pasamos a la función DERECHA, para que saque esa cantidad de caracteres del final de la cadena.
Función personalizada para eliminar texto a ambos lados de un carácter
Como has visto en los ejemplos anteriores, puedes resolver casi cualquier caso de uso utilizando las funciones nativas de Excel en diferentes combinaciones. El problema es que necesitas recordar un puñado de fórmulas complicadas. Hmm, ¿y si escribimos nuestra propia función para cubrir todos los escenarios? Suena como una buena idea. Así que, añade el siguiente código VBA a tu libro (los pasos detallados para insertar VBA en Excel sonaquí):
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 FunctionNuestra función se llama EliminarTexto y tiene la siguiente sintaxis:
EliminarTexto(cadena, delimitador, ocurrencia, is_after)Dónde:
Cadena - es la cadena de texto original. Puede representarse mediante una referencia de celda.
Delimitador - el carácter antes/después del cual eliminar el texto.
Ocurrencia - la instancia del delimitador.
Es_después - un valor booleano que indica de qué lado del delimitador hay que eliminar el texto. Puede ser un solo carácter o una secuencia de caracteres.
- TRUE - borra todo lo que hay después del delimitador (incluido el propio delimitador).
- FALSE - borra todo lo que hay antes del delimitador (incluido el propio delimitador).
Una vez insertado el código de la función en su libro de trabajo, podrá eliminar las subcadenas de las celdas mediante fórmulas compactas y elegantes.
Por ejemplo, para borrar todo lo que hay después de la 1ª coma en A2, la fórmula en B2 es:
=QuitarTexto(A3, ", ", 1, TRUE)
Para borrar todo lo que hay antes de la 1ª coma en A2, la fórmula en C2 es:
=QuitarTexto(A3, ", ", 1, FALSE)
Dado que nuestra función personalizada acepta un cadena para el delimitador ponemos una coma y un espacio (", ") en el segundo argumento para evitar tener que recortar los espacios a la izquierda.
Nuestra función personalizada funciona de maravilla, ¿verdad? Pero si crees que es la solución integral, aún no has visto el siguiente ejemplo :)
Borrar todo antes, después o entre caracteres
Para obtener aún más opciones para eliminar caracteres individuales o texto de varias celdas, por coincidencia o posición, añada nuestra Ultimate Suite a su caja de herramientas de Excel.
A continuación, examinaremos más de cerca la Eliminar por posición situado en la Datos de Ablebits tab> Texto grupo> Eliminar .
A continuación trataremos los dos casos más habituales.
Eliminar todo lo que hay antes o después de un texto determinado
Supongamos que todas sus cadenas fuente contienen alguna palabra o texto común y desea eliminar todo lo que hay antes o después de ese texto. Para ello, seleccione sus datos fuente, ejecute el comando Eliminar por posición y configúrelo como se muestra a continuación:
- Seleccione Todos los caracteres antes del texto o Todos los caracteres después del texto y escriba el texto clave (o carácter) en la casilla situada junto a él.
- Dependiendo de si las mayúsculas y las minúsculas deben tratarse como caracteres diferentes o iguales, marque o desmarque la casilla Mayúsculas y minúsculas caja.
- Hit Eliminar .
En este ejemplo, estamos eliminando todos los caracteres que preceden a la palabra "error" en las celdas A2:A8:
Y obtener exactamente el resultado que buscamos:
Eliminar texto entre dos caracteres
En caso de que haya información irrelevante entre 2 caracteres específicos, puede eliminarla rápidamente:
- Elija Eliminar todas las subcadenas y escriba dos caracteres en las casillas de abajo.
- Si también deben eliminarse los caracteres "entre", compruebe la opción Incluir delimitadores caja.
- Haga clic en Eliminar .
Como ejemplo, borramos todo lo que hay entre dos caracteres de tilde (~), y obtenemos como resultado las cadenas perfectamente limpias:
Para probar otras funciones útiles incluidas en esta herramienta multifuncional, te animo a que descargues una versión de evaluación al final de este post. Gracias por leer y ¡esperamos verte en nuestro blog la semana que viene!
Descargas disponibles
Eliminar los primeros o últimos caracteres - ejemplos (archivo .xlsm)
Ultimate Suite - versión de prueba (archivo .exe)