Extraer número de cadena de texto

¿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:
Extraer número de cadena de texto

>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, «»)
Extraer número de cadena de texto

>

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:
Extraer número de cadena de texto

>

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.

Cómo funciona esta fórmula:

Aquí, usamos nuevamente la combinación de funciones FILA, INDIRECTA y LEN para crear una secuencia de números igual al total de caracteres en la cadena fuente más 1 (la función de ese carácter adicional quedará clara un poco más adelante).

FILA(INDIRECTA(«1:»&LEN(A2)+1))

MID e ISNUMBER hacen el mismo trabajo que en el ejemplo anterior: MID extrae caracteres individuales e ISNUMBER los convierte a valores lógicos. La matriz resultante de VERDADERO y FALSO va a la función COINCIDIR como una matriz de búsqueda:

COINCIDIR (FALSO, {VERDADERO; VERDADERO; FALSO; FALSO; FALSO; FALSO; VERDADERO; VERDADERO; FALSO}, 0)

MATCH calcula una posición relativa del primer FALSO, dándonos la posición del primer carácter no numérico en la cadena (3 en A2). Para extraer los números anteriores, restamos 1 de la posición del primer carácter de texto y entregamos la diferencia al numero_caracteres argumento de la función IZQUIERDA:

IZQUIERDA(A2, 3-1)

Ahora, volvamos a un carácter «extra» en la secuencia generada por FILA(INDIRECT()+1)). Como ya sabes, esta secuencia proporciona los puntos de partida para la función MID. Sin +1, MID extraería exactamente tantos caracteres como hay en la cadena original. Si la cadena contiene solo números, ISNUMBER devolverá solo VERDADERO, mientras que MATCH necesita al menos un FALSO. Para garantizar eso, agregamos un carácter más a la longitud total de la cadena, que la función MID convertiría en una cadena vacía. Por ejemplo, en B7, MID devuelve esta matriz:

{«1″;»2″;»3″;»4″;»»}

Nota. Como es el caso con la función DERECHA, IZQUIERDA también devuelve un subcadena numérica, que técnicamente es texto, no número. Para obtener el resultado como un número en lugar de una cadena numérica, anide la fórmula en la función VALOR o multiplique el resultado por 1 como se muestra en el primer ejemplo.

Cómo obtener un número desde cualquier posición en una cadena

Si su tarea implica extraer un número de cualquier lugar de una cadena, puede utilizar la siguiente fórmula alucinante publicada en Foro MrExcel:

=SUMPRODUCT(MID(0&A2, LARGE(INDEX(ISNUMBER(–MID(A2, ROW(INDIRECT(«1:»&LEN(A2))), 1)) * ROW(INDIRECT(«1:»&LEN(A2))), 0), ROW(INDIRECT(«1:»&LEN(A2))))+1, 1) * 10^ROW(INDIRECT(«1:»&LEN(A2)))/10)

Donde A2 es la cadena de texto original.

Desglosar esta fórmula requeriría un artículo aparte, por lo que puedes simplemente copiarlo en tu hoja de trabajo para asegurarte de que realmente funciona 🙂
Extraer número de cadena de texto

>Sin embargo, al examinar los resultados, puede notar un inconveniente insignificante: si la cadena de origen no contiene un número, la fórmula devuelve cero, como en la fila 6 de la captura de pantalla anterior. Para solucionar este problema, puede envolver la fórmula en la declaración IF, cuya prueba lógica verifica si la cadena fuente contiene algún número. Si es así, la fórmula extrae el número; de lo contrario, devuelve una cadena vacía:

=IF(SUM(LEN(A2)-LEN(SUBSTITUTE(A2, {«0″,»1″,»2″,»3″,»4″,»5″,»6″,»7″,»8″,»9»}, «»)))>0, SUMPRODUCT(MID(0&A2, LARGE(INDEX(ISNUMBER(–MID(A2,ROW(INDIRECT(«$1:$»&LEN(A2))),1))* ROW(INDIRECT(«$1:$»&LEN(A2))),0), ROW(INDIRECT(«$1:$»&LEN(A2))))+1,1) * 10^ROW(INDIRECT(«$1:$»&LEN(A2)))/10),»»)

Como se muestra en la siguiente captura de pantalla, la fórmula mejorada funciona a la perfección (felicitaciones a Alex, nuestro gurú de Excel, por esta mejora):
Extraer número de cadena de texto

>A diferencia de todos los ejemplos anteriores, el resultado de esta fórmula es número. Para asegurarse de esto, simplemente observe los valores alineados a la derecha en la columna B y los ceros iniciales truncados.

Consejo. En Excel 365 – Excel 2019, existe una solución mucho más sencilla con la ayuda de la función TEXTJOIN. Consulte Cómo eliminar texto y conservar números.

Extraiga el número de una cadena de texto con Ultimate Suite

Como acaba de ver, no existe una fórmula trivial en Excel para extraer números de una cadena de texto. Si tiene dificultades para comprender las fórmulas o modificarlas para sus conjuntos de datos, es posible que le guste esta forma sencilla de obtener números a partir de una cadena en Excel.

Con nuestro Ultimate Suite agregado a su cinta de Excel, así es como puede recuperar rápidamente números de cualquier cadena alfanumérica:

  • Ve a la Datos de Ablebits pestaña > Texto grupo y haga clic en Extracto:
    Extraer número de cadena de texto>
  • Seleccione todas las celdas con las cadenas de origen.
  • En el panel de la herramienta Extraer, seleccione el Extraer números boton de radio.
  • Dependiendo de si desea que los resultados sean fórmulas o valores, seleccione la opción Insertar como fórmula casilla o déjela sin seleccionar (predeterminado).

    Mi consejo es seleccionar esta casilla si desea que los números extraídos se actualicen automáticamente tan pronto como se realicen cambios en las cadenas de origen. Si desea que los resultados sean independientes de las cadenas originales (por ejemplo, en caso de que planee eliminar los datos de origen en un momento posterior), no seleccione esta casilla.

  • Haga clic en el Insertar resultados botón. ¡Hecho!
  • Extraer número de cadena de texto

    >Como en el ejemplo anterior, los resultados de la extracción son númeroslo que significa que eres libre de contar, sumar, promediar o realizar cualquier otro cálculo con ellos.

    En este ejemplo, hemos elegido insertar los resultados como valoresy el complemento hizo exactamente lo que se solicitó:
    Extraer número de cadena de texto

    >Si el Insertar como fórmula Si se seleccionó la casilla de verificación, observará un fórmula en la barra de fórmulas. ¿Curioso por saber cuál? Simplemente descargue la versión de prueba de Ultimate Suite y compruébelo usted mismo 🙂

    descargas disponibles

    Número de extracto de Excel: libro de trabajo de muestra (archivo .xlsx)
    Ultimate Suite – versión de prueba (archivo .exe)

    Usted también podría estar interesado en

    Error 403 The request cannot be completed because you have exceeded your quota. : quotaExceeded

    Extraer número de cadena de texto – Preguntas frecuentes

    Preguntas frecuentes sobre cómo extraer números de una cadena de texto

    ¿Qué significa extraer números de una cadena de texto?

    Extraer números de una cadena de texto significa obtener solamente los valores numéricos presentes en una frase o secuencia de caracteres.

    ¿Cuál es la importancia de extraer números de una cadena de texto?

    Extraer números de una cadena de texto puede ser útil en diversas situaciones, como por ejemplo:

  • Cuando se necesita analizar y procesar datos numéricos contenidos en un texto.
  • En tareas de extracción de información relacionada con fechas, precios, medidas, entre otros.
  • En el desarrollo de algoritmos matemáticos o procesamiento de lenguaje natural.
  • ¿Cuáles son las diferentes formas de extraer números de una cadena de texto en programación?

    Existen diferentes enfoques para extraer números de una cadena de texto dependiendo del lenguaje de programación que estés utilizando:

    • Algunos lenguajes cuentan con funciones específicas para realizar esta tarea, como la función «re» en Python.
    • Otra forma comúnmente utilizada es hacer uso de expresiones regulares.
    • En algunos casos, es posible recorrer cada carácter de la cadena y extraer los números mediante código personalizado.

    ¿Dónde puedo encontrar más información sobre cómo extraer números de una cadena de texto en diferentes lenguajes de programación?

    Aquí te presentamos algunos recursos que te pueden ser útiles:

    Recuerda que la elección de la mejor opción para extraer números de una cadena de texto dependerá del contexto y del lenguaje de programación que estés utilizando.

    Error 403 The request cannot be completed because you have exceeded your quota. : quotaExceeded

    La extracción de números de cadenas alfanuméricas en Excel⁢ puede ser una tarea compleja, pero utilizando las fórmulas‌ adecuadas, se ‍puede lograr de manera efectiva. Aquí hay un resumen de cómo ‌puedes extraer ⁤números ⁢desde diferentes posiciones dentro de una cadena de texto:

    1. Extraer el​ número desde el final de ‍una cadena

    La ‌fórmula⁤ para extraer el número al final de una cadena ‌en Excel es la siguiente:

    excel

    =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)))), "")

    Esta fórmula devuelve el número al final de la cadena. Al usar VALUE, ​convertimos el resultado en un número real.‌ Si no​ hay un número al final, la fórmula devuelve‌ una cadena⁤ vacía.

    2. Extraer el número desde el principio de una cadena

    Para⁣ obtener el número desde el principio:

    excel

    =LEFT(A2, MATCH(FALSE, ISNUMBER(MID(A2, ROW(INDIRECT("1:"&LEN(A2)+1)), 1)
    1), 0) - 1)

    Aquí, MATCH(FALSE...) ayuda ⁤a encontrar la posición del primer ​carácter​ no numérico, y LEFT extrae los caracteres hasta‍ esa posición.

    3. Extraer⁤ un número desde cualquier posición en ⁣una ‌cadena

    Si deseas extraer⁢ un​ número ​sin importar su posición:

    excel

    =IF(SUM(LEN(A2)-LEN(SUBSTITUTE(A2, {"0","1","2","3","4","5","6","7","8","9"}, "")))>0, SUMPRODUCT(MID(0&A2, LARGE(INDEX(ISNUMBER(--MID(A2, ROW(INDIRECT("1:"&LEN(A2))), 1)) ROW(INDIRECT("1:"&LEN(A2))), 0), ROW(INDIRECT("1:"&LEN(A2))))+1, 1) 10^ROW(INDIRECT("1:"&LEN(A2)))/10),"")

    Esta fórmula ‍combina varias funciones para identificar y extraer ‌todos los números ⁣en la cadena y devolverlos como un solo número.

    4. Desgloses de​ las fórmulas

    • ISNUMBER y MID: Usadas para ⁢evaluar los caracteres‍ en ⁢la cadena y​ determinar si son⁤ numéricos.
    • ROW(INDIRECT(…)): Crea una matriz de números que ​representan la posición​ de cada⁣ carácter en la cadena.
    • LARGE: Encuentra las posiciones ⁣de los⁤ números en la cadena.

    5. Uso⁤ de​ AFL (Ablebits⁤ Ultimate Suite)

    Si ‌prefieres no trabajar‌ con fórmulas⁣ complejas, ‌puedes⁤ utilizar el complemento Ultimate Suite de Ablebits,‌ que proporciona herramientas para⁢ extraer números de cadenas ⁣con ⁢solo unos pocos clics:

    1. Selecciona las celdas​ con las cadenas de texto.
    2. Ve a la ‍pestaña Datos de Ablebits >‌ Texto > selecciona⁤ Extraer.
    3. Selecciona Extraer ⁢números y elige⁤ tus opciones de ​salida.

    Con estas herramientas, puedes extraer fácilmente números de cadenas de texto en Excel, ya sea manualmente con ‌fórmulas o usando software adicional que simplifica el proceso.

    1 comentario en «Extraer número de cadena de texto»

    1. ¡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.

    Deja un comentario