¿Alguna vez te has encontrado con un mar de texto y te has preguntado cómo extraer ese número clave que necesitas? Ya sea para analizar datos, procesar información o simplemente para organizar tus archivos, extraer números de cadenas de texto puede parecer un desafío. En este artículo, te sumergirás en las técnicas más efectivas y creativas para desenterrar esos dígitos ocultos. Prepárate para descubrir herramientas, métodos y ejemplos prácticos que te harán más eficiente en tu trabajo diario. ¡Vamos a desentrañar el misterio de los números en tus textos!
Extraer un número de una cadena de texto puede resultar una tarea tediosa y complicada, especialmente cuando se trata de un conjunto de caracteres mezclados con números y otros símbolos. Ya sea que estés trabajando en un proyecto de programación, manejo de datos o análisis de texto, este artículo te mostrará diferentes métodos y técnicas que te ayudarán a extraer ese número que tanto necesitas. ¡Sigue leyendo para descubrir cómo puedes simplificar esta tarea y ahorrar tiempo en el proceso!
El tutorial muestra cómo extraer números de varias cadenas de texto en Excel mediante fórmulas y la herramienta Extraer.
Cuando se trata de extraer parte de una cadena de texto de una longitud determinada, Excel proporciona tres funciones de subcadena (izquierda, derecha y media) para realizar la tarea rápidamente. Cuando se trata de extraer números de una cadena alfanumérica, Microsoft Excel proporciona… nada.
Para obtener un número de una cadena en Excel, se necesita un poco de ingenio, un poco de paciencia y un montón de funciones diferentes anidadas entre sí. O puede ejecutar la herramienta Extraer y realizar el trabajo con un clic del mouse. A continuación encontrará todos los detalles sobre ambos métodos.
Cómo extraer el número del final de una cadena de texto
Cuando tenga una columna de cadenas alfanuméricas donde el número viene después del texto, puede usar la siguiente fórmula para obtenerlo.
BIEN(celúlaLARGO(celúla) – MAX(SI(ESNÚMERO(MEDIO(celúlaFILA(INDIRECTA(«1:»&LEN(celúla))), 1) *1)=FALSO, FILA(INDIRECTA(«1:»&LEN(celúla))), 0)))
Nos detendremos un poco más adelante en la lógica de la fórmula. Por ahora, simplemente reemplace celúla con una referencia a la celda que contiene la cadena original (A2 en nuestro caso), e ingrese la fórmula en cualquier celda vacía en la misma fila, digamos en B2:
=RIGHT(A2, LEN(A2) – MAX(IF(ISNUMBER(MID(A2, ROW(INDIRECT(«1:»&LEN(A2))), 1) *1)=FALSE, ROW(INDIRECT(«1:»&LEN(A2))), 0)))
Esta fórmula obtiene el número sólo desde el final. Si una cadena también tiene números al principio o en el medio, se ignoran:
>La extracción se realiza con la función DERECHA que pertenece a la categoría de funciones de Texto. La salida de esta función es siempre texto. En nuestro caso, el resultado es un subcadena numéricaque en términos de Excel también es texto, no número.
Si necesita que el resultado sea un número (que puede usar en cálculos posteriores), luego ajuste la fórmula en la función VALOR o realice una operación aritmética que no cambie el resultado, digamos, multiplique por 1 o sume 0. Para detectar errores en las cadenas que no contienen un número único, utilice la función SI.ERROR. Por ejemplo:
=IFERROR(VALUE(RIGHT(A2, LEN(A2) – MAX(IF(ISNUMBER(MID(A2, ROW(INDIRECT(«1:»&LEN(A2))), 1)*1)=FALSE, ROW(INDIRECT(«1:»&LEN(A2))), 0)))), «»)
o
=IFERROR(RIGHT(A2, LEN(A2) – MAX(IF(ISNUMBER(MID(A2, ROW(INDIRECT(«1:»&LEN(A2))), 1) *1)=FALSE, ROW(INDIRECT(«1:»&LEN(A2))), 0))) +0, «»)
>
Nota. En Dynamic Array Excel (Office 365 y 2021), ingresa la fórmula de la forma habitual con la tecla Enter. En Excel 2019 y versiones anteriores, solo funciona como una fórmula matricial, así que recuerda presionar Ctrl + Mayús + Intro para completarlo.
Cómo funciona esta fórmula:
Para extraer un número de una cadena alfanumérica, lo primero que necesita saber es dónde iniciar la extracción. La posición del último carácter no numérico de una cadena se determina con la ayuda de esta complicada fórmula:
MAX(SI(ESNÚMERO(MEDIO(A2, FILA(INDIRECT(«1:»&LEN(A2))), 1)*1)=FALSO, FILA(INDIRECT(«1:»&LEN(A2))), 0) )
Para entender la lógica, investiguemos desde dentro:
La combinación FILA(INDIRECT(«1:»&LEN(A2))) crea una secuencia de números correspondiente al total de caracteres en la cadena de origen (A2), y servimos estos números secuenciales a MID como números iniciales:
MEDIO(A2, {1;2;3;4;5;6;7;8}, 1)
La función MID extrae cada carácter individual de A2 y los devuelve como una matriz:
{«0″;»5″;»-«;»E»;»C»;»-«;»0″;»1»}
Como MID es una función de texto, su salida siempre es texto (como puede observar, todos los caracteres están entre comillas). Para convertir unos numéricos en números, multiplicamos la matriz por 1 (la doble negación –MID() tendrá el mismo efecto). El resultado de esta operación es una serie de números y #¡VALOR! errores que representan caracteres no numéricos:
ESNÚMERO({0;5;#¡VALOR!;#¡VALOR!;#¡VALOR!;#¡VALOR!;0;1})
La función ESNÚMERO evalúa cada elemento de la matriz y da su veredicto en forma de valores booleanos: VERDADERO para números, FALSO para cualquier otra cosa:
{VERDADERO;VERDADERO;FALSO;FALSO;FALSO;FALSO;VERDADERO;VERDADERO}
Esta matriz pasa a la prueba lógica de la función SI, donde cada elemento de la matriz se compara con FALSO:
SI({VERDADERO;VERDADERO;FALSO;FALSO;FALSO;FALSO;VERDADERO;VERDADERO}=FALSO, FILA(INDIRECTA(«1:»&LEN(A2))), 0)
Para cada FALSO (valor no numérico), otra función FILA(INDIRECT()) devuelve su posición relativa en la cadena. Por cada VERDADERO (valor numérico), se devuelve un cero. La matriz resultante tiene el siguiente aspecto:
{0;0;3;4;5;6;0;0}
El resto es fácil. La función MAX encuentra el número más alto en la matriz anterior, que es la posición del último valor no numérico en la cadena (6 en nuestro caso). Simplemente, reste esa posición de la longitud total de la cadena devuelta por LEN y pase el resultado a DERECHA para que sepa cuántos caracteres extraer del lado derecho de la cadena:
DERECHA(A2, LEN(A2) – 6)
¡Hecho!
Cómo extraer el número del principio de una cadena de texto
Si está trabajando con registros donde aparece texto después del número, puede extraer el número desde el inicio de una cadena usando esta fórmula genérica:
IZQUIERDA(celúlaCOINCIDENCIA(FALSO, ES NÚMERO(MEDIO(celúlaFILA(INDIRECTA(«1:»&LEN(celúla)+1)), 1) *1), 0) -1)
Con la cadena original en A2, use la siguiente fórmula para obtener el número:
=LEFT(A2, MATCH(FALSE, ISNUMBER(MID(A2, ROW(INDIRECT(«1:»&LEN(A2)+1)), 1) *1), 0) -1)
No importa cuántos dígitos haya en el medio o al final, solo se extrae el número inicial:
>
Nota. En Excel 365 y Excel 2021, debido a la compatibilidad con matrices dinámicas, una fórmula normal funciona bien. En Excel 2019 y versiones anteriores, debes presionar Ctrl + Mayús + Intro para convertirlo explícitamente en un fórmula matricial.
¡Excelente artículo! A mí me pasó una vez que necesitaba sacar números de una lista de correos y no sabía por dónde empezar. Gracias a lo que aprendí aquí, ahora puedo hacerlo en un santiamén. 💪¡Sigue así! – josep adria.