Tabla de contenido
La siguiente parte de nuestras operaciones con texto en hojas de cálculo está dedicada a la extracción. Descubre formas de extraer diversos datos -texto, caracteres, números, URL, direcciones de correo electrónico, fecha y hora, etc.- de varias posiciones en varias celdas de Google Sheets a la vez.
Fórmulas de Google Sheets para extraer texto y números de cadenas
Las fórmulas en Google Sheets lo son todo. Mientras que algunas combinaciones añaden texto & números y eliminan varios caracteres, otras también extraen texto, números, separan caracteres, etc.
Extraer datos por posición: primer/último/medio N caracteres
Las funciones más fáciles de manejar cuando vas a sacar datos de las celdas de Google Sheets son IZQUIERDA, DERECHA y MEDIA. Obtienen cualquier dato por posición.
Extraer datos del principio de las celdas en Google Sheets
Puede extraer fácilmente los N primeros caracteres utilizando la función IZQUIERDA:
LEFT(cadena,[número_de_caracteres])- cadena es el texto del que desea extraer los datos.
- número_de_caracteres es el número de caracteres que hay que sacar empezando por la izquierda.
Este es el ejemplo más sencillo: eliminemos los prefijos de los países de los números de teléfono:
Como puedes ver, los códigos de país llevan 6 símbolos al principio de las celdas, por lo que la fórmula que necesitas es:
=LEFT(A2,6)
Consejo. ArrayFormula permitirá obtener 6 caracteres de todo el rango a la vez:
=ArrayFormula(IZQUIERDA(A2:A7,6))
Extraer datos del final de las celdas en Google Sheets
Para extraer los últimos N caracteres de las celdas, utilice en su lugar la función DERECHA:
RIGHT(cadena,[número_de_caracteres])- cadena sigue siendo el texto (o una referencia de celda) del que extraer los datos.
- número_de_caracteres es también el número de caracteres a tomar de la derecha.
Vamos a conseguir que los nombres de los países de los mismos números de teléfono:
Toman sólo 2 caracteres y eso es exactamente lo que menciono en la fórmula:
= DERECHA(A2,2)
Consejo: ArrayFormula también te ayudará a extraer datos del final de todas las celdas de Google Sheets a la vez:
=ArrayFormula(RIGHT(A2:A7,2))
Extraer datos del centro de las celdas en Google Sheets
Si hay funciones para extraer datos del principio y del final de las celdas, debe haber una función para extraer datos del medio también. Y sí - hay una.
Se llama MID:
MID(cadena, inicio_at, extraer_longitud)- cadena - el texto del que desea quitar la parte central.
- inicio - la posición del carácter a partir del cual desea empezar a obtener los datos.
- longitud_extracto - el número de caracteres que necesitas sacar.
Siguiendo con el ejemplo de los mismos números de teléfono, busquemos los números de teléfono propiamente dichos sin sus prefijos de país ni la abreviatura del país:
Como los códigos de país terminan con el 6º carácter y el 7º es el guión, sacaré números a partir del 8º dígito. Y obtendré 8 dígitos en total:
=MID(A2,8,8)
Consejo. Si cambia una celda por todo el rango y lo envuelve en ArrayFormula obtendrá el resultado de cada celda a la vez:
=ArrayFormula(MID(A2:A7,8,8))
Extraer texto/números de cadenas
A veces, la extracción de texto por posición (como se muestra arriba) no es una opción. Las cadenas requeridas pueden residir en cualquier parte de sus celdas y constar de un número diferente de caracteres, lo que le obliga a crear fórmulas diferentes para cada celda.
Pero Google Sheets no sería Google Sheets si no tuviera otras funciones que ayudaran a extraer texto de cadenas.
Repasemos algunas posibilidades que ofrecen las hojas de cálculo.
Extraer datos anteriores a un texto determinado - IZQUIERDA+BUSCAR
Siempre que desee extraer datos que preceden a un texto determinado, utilice IZQUIERDA + BUSCAR:
- IZQUIERDA se utiliza para devolver un determinado número de caracteres desde el principio de las celdas (desde su izquierda)
- BUSCAR busca determinados caracteres/cadenas y obtiene su posición.
Combínelos - e IZQUIERDA devolverá el número de caracteres sugerido por BUSCAR.
He aquí un ejemplo: ¿cómo extraer códigos textuales antes de cada "ea"?
Esta es la fórmula que le ayudará en casos similares:
=LEFT(A2,SEARCH("ea",A2)-1)
Esto es lo que ocurre en la fórmula:
- BUSCAR("ea",A2) busca 'ea' en A2 y devuelve la posición donde empieza ese 'ea' para cada celda - 10.
- Así que la 10ª posición es donde reside 'e'. Pero como quiero todo justo antes de 'ea', necesito restar 1 de esa posición. De lo contrario, 'e' será devuelto también. Así que al final obtengo 9.
- IZQUIERDA mira A2 y obtiene los 9 primeros caracteres.
Extraer datos después del texto
También existen medios para obtener todo lo que se encuentra después de una determinada cadena de texto. Pero esta vez, RIGHT no servirá de nada. En su lugar, REGEXREPLACE toma su turno.
Sugerencia: REGEXREPLACE utiliza expresiones regulares. Si no está preparado para manejarlas, existe una solución mucho más sencilla que se describe a continuación. REGEXREPLACE(texto, expresión_regular, sustitución)
- texto es una cadena o una celda en la que desea realizar cambios
- expresión_regular es la combinación de caracteres que representa una parte del texto que está buscando
- sustitución es lo que quieras obtener en lugar de eso texto
Entonces, ¿cómo se utiliza para extraer datos a partir de un texto determinado, "ea" en mi ejemplo?
Fácil: con esta fórmula:
=REGEXREPLACE(A2,"(.*)ea(.*)","$2")
Permítanme explicarles cómo funciona exactamente esta fórmula:
- A2 es una celda de la que estoy extrayendo los datos.
- "(.*)ea(.*)" es mi expresión regular (o puede llamarse máscara). Busco 'ea' y pongo todos los demás caracteres entre corchetes. Hay 2 grupos de caracteres: todo lo que hay antes de 'ea' es el primer grupo (.*) y todo lo que hay después de 'ea' es el segundo (.*). Toda la máscara se pone entre comillas dobles.
- "$2" es lo que quiero obtener - el segundo grupo (de ahí su número 2) del argumento anterior.
Consejo: en esta página especial se recogen todos los caracteres utilizados en las expresiones regulares.
Extraer números de las celdas de Google Sheets
¿Y si sólo quieres extraer números cuando su posición y lo que vaya antes & después no importa?
Las máscaras (también conocidas como expresiones regulares) también ayudan. De hecho, tomaré la misma función REGEXREPLACE y cambiaré la expresión regular:
=REGEXREPLACE(A2,"[^[:digit:]]", "")
- A2 es una celda de donde quiero obtener esos números.
- "[^[:digit:]]" es una expresión regular que toma todo menos dígitos. Ese símbolo ^caret es lo que hace una excepción para los dígitos.
- "" sustituye todo excepto los caracteres numéricos por "nada". O, en otras palabras, lo elimina por completo, dejando sólo números en las celdas. O, extrae números :)
Extraer texto ignorando números y otros caracteres
De forma similar, puedes eliminar sólo los datos alfabéticos de las celdas de Google Sheets. La contracción para la expresión regular que representa texto se denomina en consecuencia - alfa:
=REGEXREPLACE(A2,"[^[:alpha:]]", "")
Esta fórmula toma todo menos las letras (A-Z, a-z) y lo sustituye literalmente por "nada". O, dicho de otro modo, quita sólo las letras.
Formas de extraer datos de las celdas de Google Sheets sin fórmulas
Si busca una forma sencilla y sin fórmulas de extraer diversos tipos de datos, ha llegado al lugar adecuado. Nuestro complemento Herramientas potentes tiene justo las herramientas para el trabajo.
Extraiga distintos tipos de datos mediante los complementos de Power Tools
La primera herramienta que me gustaría que conocieras se llama Extract. Hace exactamente lo que has venido a buscar en este artículo: extrae distintos tipos de datos de las celdas de Google Sheets.
Ajustes fáciles de usar
Todos los casos que he tratado anteriormente no sólo se pueden resolver con el complemento. La herramienta es fácil de usar por lo que todo lo que tiene que hacer es seleccionar el rango que desea procesar y marcar las casillas de verificación necesarias. Sin fórmulas ni expresiones regulares.
¿Recuerdas el segundo punto de este artículo con REGEXREPLACE y las expresiones regulares? He aquí lo sencillo que es para el complemento:
Opciones adicionales
Como puede ver, hay algunos opciones adicionales (sólo casillas de verificación) que puede encender/apagar rápidamente para obtener el resultado más preciso:
- Obtiene las cadenas del caso de texto requerido solamente.
- Extraiga todas las ocurrencias de cada celda y colóquelas en una celda o en columnas separadas.
- Inserte una nueva columna con el resultado a la derecha de los datos de origen.
- Borra el texto extraído de los datos de origen.
Extraer distintos tipos de datos
Power Tools no sólo extrae datos antes/después/entre determinadas cadenas de texto y los N primeros/últimos caracteres, sino que también extrae lo siguiente:
- Números junto con sus decimales manteniendo intactos los separadores decimal/mil:
Extraer cualquier cadena de datos de cualquier lugar
También existe la opción de configurar tu propio patrón exacto y utilizarlo para la extracción. Extracto por máscara y sus caracteres comodín - * y ? - hacer el truco:
- Por ejemplo, puedes resaltar todo lo que hay entre los corchetes utilizando la siguiente máscara: (*)
- O conseguir esas SKU que sólo tienen 5 números en sus identificadores: SKU?????
- O, como muestro en la captura de pantalla de abajo, tire de todo después de cada 'ea' en cada celda: ea*
Extraer fecha y hora de marcas de tiempo
Además, existe una herramienta más pequeña que extrae la fecha y la hora de las marcas de tiempo: se llama Split Date & Time.
Aunque se creó para dividir marcas de tiempo en primer lugar, es perfectamente capaz de obtener una de las unidades deseadas individualmente:
Sólo tienes que seleccionar una de las casillas en función de lo que quieras extraer -fecha u hora- de las marcas de tiempo de Google Sheets y pulsar Dividir La unidad requerida se copiará en una nueva columna (o sustituirá a los datos originales si también selecciona la última casilla):
Esta herramienta también forma parte del complemento Power Tools, por lo que una vez que la instales para obtener cualquier dato de las celdas de Google Sheets, la tendrás completamente cubierta. Si no es así, deja un comentario y te ayudaremos :)