Caso real: Fórmulas y macros VBA para extraer texto de celdas
En este tutorial responde un caso práctico que nos ha planteado un suscriptor de nuestro Canal de Youtube. Nos plantea que a diario recibe una base de datos donde en un campo se incluyen diversos textos, y entre esos textos está el número telefónico. El número es precedido del texto “teléfono: “.
Para resolver este caso haremos uso de fórmulas y funciones en Excel, así como macros VBA para dar una segunda solución. Ambas soluciones son válidas. Tú eliges cuál tomar.
Funciones en Excel para extraer texto
Tenemos el siguiente texto de ejemplo en el cual aplicaremos un par de funciones para devolver un texto dentro de la celda.
“Retirar documento en Av. Luis Albeto 125, preguntar en recepción, teléfono: 123-456789, solo de 8:00 a 10:00….”
El objetivo es devolver el número telefónico que se encuentra después del texto teléfono:. El primer paso será usar la función ENCONTRAR para ubicar la posición donde se encuentra el texto antes mencionado.
=ENCONTRAR(“teléfono: “,A2)
Figura 1. Función ENCONTRAR para devolver la posición de un texto en una celda.
Ver video Fórmulas y macros para devolver texto
Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.
En la Figura 1 vemos que el texto fue encontrado en la posición 67. El siguiente paso será usar la función EXTRAE para devolver n cantidad de caracteres a partir de una posición. En la función EXTRAE usaremos los parámetros:
-
texto. El texto de donde deseamos extraer el número.
-
posición_inicial. A partir de qué posición vamos a devolver el número. La posición encontrada en la fila 2 es 67, sumamos 10 que es la longitud de “teléfono: ”.
-
núm_de_caracteres. Devolvemos 10 caracteres a partir de la posición 77.
=EXTRAE(A2,B2+10,10)
Figura 2. Función EXTRAE para devolver n cantidad de caracteres a partir de una posición.
Macros y VBA para devolver el número desde una celda
Otra solución para esta consulta es usar una macro que recorra las celdas elegidas y en otro rango de celdas devuelva los números telefónicos encontrados en las filas.
Nuestra macro usa la función InputBox para solicitar la palabra que se buscará. Cuando se encuentre la palabra en cada una de las celdas, usaremos la función Mid (EXTRAE) para devolver 10 caracteres del número.
Instrucciones: Elegimos las celdas de la columna, ejecutamos la macro y el resultado se mostrará en la columna D.
Figura 3. VBA y macros para extraer texto de celdas.
Código VBA de la macro
'EXCELeINFO 'MVP Sergio Alejandro Campos 'http://www.exceleinfo.com 'https://www.youtube.com/user/sergioacamposh 'http://blogs.itpro.es/exceleinfo Sub ExtraerNumero() Palabra = InputBox("Ingresa la palabra a buscar") LargoPalabra = Len(Palabra) For Each Celda In Selection Encontrado = Application.WorksheetFunction.Find(Palabra, Celda) Celda.Offset(0, 3).Value = VBA.Mid(Celda.Value, Encontrado + LargoPalabra, 10) Next Celda End Sub
Descarga el archivo de ejemplo
Fórmulas y macros VBA para extraer texto de celdas – EXCELeINFO.zip
Si te gustó este tutorial por favor regístrate en nuestra Lista de correo y Suscríbete a nuestro canal de YouTube para que estés siempre enterado de lo nuevo que publicamos.