Extraer números de una celda en Excel

En ocasiones tenemos celdas en nuestras hojas de Excel que contienen una cadena de texto alfanumérica y necesitamos extraer solamente la parte numérica contenida dentro de dicha cadena. La solución a este problema la obtendremos en dos pasos.

  1. Encontrar la posición inicial del número dentro del texto.
  2. Encontrar la longitud del número a extraer.

Por ejemplo, para extraer los números de una celda que tiene el texto ABC4567DEF debemos encontrar la posición del primer número que es la posición 4 y a partir de esa posición extraer 4 caracteres.

1. Encontrar la posición inicial del número

Comenzamos por encontrar el primer carácter dentro de la cadena que sea un dígito entre cero y nueve. Este procedimiento lo haremos utilizando tres funciones. La primera función a utilizar será la función ENCONTRAR donde el primer argumento será una matriz que contenga los nueve dígitos buscados:

=ENCONTRAR({0,1,2,3,4,5,6,7,8,9},A1)

Es muy importante que utilices el separador de listas configurado en tu equipo. Yo utilizo la coma (,) pero es probable que tu debas utilizar el punto y coma (;) para crear tanto la matriz de dígitos como para separar los argumentos de la función. Al terminar de escribir la fórmula pulsaré la combinación de teclas Ctrl + Mayús + Entrar ya que ésta es una fórmula matricial. Si la cadena de texto que tenemos en la celda A1 es “ABC4567DEF”, entonces esta fórmula nos devolverá una matriz con diez resultados:

Extraer números de una celda en Excel

Para cada dígito que hemos buscado obtendremos un resultado y por esa razón los primeros cuatro elementos del resultado son el error #¡VALOR! que significa que la función no encontró los dígitos 0,1,2 y 3. Sin embargo, para los dígitos 4,5,6, y 7 la función ENCONTRAR nos devuelve su posición dentro de la cadena. Para los dígitos 8 y 9 obtenemos de nuevo un error porque no se encuentran dentro de la cadena.

Si eres nuevo en Excel, es probable que el tema de fórmulas matriciales sea un tanto avanzado para ti, pero continúa leyendo porque al final tendremos la fórmula exacta que debes utilizar para resolver este problema.

Eliminar los errores del resultado

La segunda función que utilizaremos será la función SI.ERROR de manera que podamos eliminar los errores contenidos en la matriz de resultados. En caso de que la función SI.ERROR encuentre el error #¡VALOR! le pediremos que lo sustituya por una cadena de texto vacía:

=SI.ERROR(ENCONTRAR({0,1,2,3,4,5,6,7,8,9},A1),"")

De esta manera, la matriz devuelta ya no contiene los errores, sino que en su lugar tenemos una cadena de texto vacía donde antes aparecía el error #¡VALOR!:

Extraer números de cadenas alfanuméricas

Ahora que ya tenemos la matriz de resultados formada solo por números y cadenas vacías, podemos utilizar la función MIN para conocer la posición menor dentro de la cadena donde se encuentra un dígito.

Obtener el valor mínimo

Solo debemos agregar la función MIN a la fórmula anterior para obtener la posición donde comienza el número dentro de la cadena alfanumérica.

=MIN(SI.ERROR(ENCONTRAR({0,1,2,3,4,5,6,7,8,9},A1),""))

Ya que esta fórmula me devuelve un solo resultado, será la fórmula que introduciré en la celda B2 para obtener la posición inicial. Recuerda que debemos pulsar las teclas Ctr + Mayús + Entrar al terminar de introducir la fórmula.

Extraer números de códigos alfanumércios en Excel

Este resultado es correcto porque nos indica que el primer dígito está ubicado en la posición 4 de nuestra cadena alfanumérica. Con esto hemos solucionado la primer parte del problema, ahora solo nos resta saber la cantidad de dígitos a extraer.

2. Encontrar la longitud del número

Para obtener la cantidad de dígitos a extraer utilizaremos también tres funciones de Excel y el método para obtener la solución será utilizar también una fórmula matricial. El primer paso es obtener cada carácter de manera individual con la función EXTRAE:

=EXTRAE(A1,FILA($1:$99),1)

La parte más interesante de esta fórmula es el segundo argumento de la función EXTRAE donde debemos colocar la posición del carácter que deseamos extraer. Para ese segundo argumento utilizo la función FILA con el rango $1:$99 lo cual hará que la función EXTRAE me devuelva cada carácter de la cadena original como parte de una matriz hasta un máximo de 99 caracteres.

Extraer sólo números de una celda

He colocado el número 99 pensando que no tendremos una cadena de texto mayor a esa longitud, pero si tienes una cadena más grande será suficiente con remplazar el número 99 por un número más grande.  Cada elemento de la matriz de resultados será de tipo texto pero necesito convertirlo en número para poder contar cada elemento numérico correctamente, por lo que debo agregar una multiplicación por uno a la fórmula anterior:

=1*EXTRAE(A1,FILA($1:$99),1)

Al hacer la multiplicación, los valores en la matriz de resultados se modifican. Aquellos caracteres que no son números devuelven un error, pero aquellos que sí son números permanecen con su valor numérico dentro de la matriz:

Extraer dígitos de una cadena de texto

Esta multiplicación era necesaria porque ahora utilizaré la función CONTAR para saber cuántos elementos de la matriz de resultado son números. La fórmula a utilizar es la siguiente:

=CONTAR(1*EXTRAE(A1,FILA($1:$99),1))

No olvides que debemos pulsar las teclas Ctrl + Mayús + Entrar al terminar de introducir la fórmula. Yo colocaré esta fórmula en la celda C1 donde obtengo el siguiente resultado:

Cómo extraer solo números en Excel

De esta manera concluimos con la segunda parte de la solución. Ahora solo nos resta utilizar ambos resultados para extraer el número completo.

Extraer números de una celda en Excel

Ya hemos solucionado la parte más compleja de este problema. Solo debemos utilizar la función EXTRAE para extraer los números de la cadena de texto que se encuentra en la celda A1. La fórmula es muy sencilla:

Cómo extraer números de una cadena alfanumérica

Para probar que esta técnica funciona para cualquier otra cadena aplicaremos nuestras fórmulas a varias celdas que contienen una cadena alfanumérica:

Ejemplo para extraer números de una celda

Para finalizar te mostraré la fórmula integrada, es decir, la fórmula que nos ayuda a extraer números de una celda en un solo paso y que es simplemente la integración de las fórmulas desarrolladas anteriormente:

=EXTRAE(A2, MIN(SI.ERROR(ENCONTRAR({0,1,2,3,4,5,6,7,8,9},A2),"")), CONTAR(1*EXTRAE(A2,FILA($1:$98),1)))

Recuerda que esta es una fórmula matricial por lo que debemos pulsar la combinación de teclas Ctrl + Mayús + Entrar. El resultado será el mismo que hemos obtenido con las fórmulas anteriores.

Fórmula para extraer números de una celda en Excel

Como puedes observar en la columna E, los números extraídos siguen siendo texto. Si deseas convertirlos en números se puede multiplicar el resultado de la fórmula anterior por 1 de manera puedan ser incluidos en cálculos numéricos. Es importante mencionar que esta fórmula funciona solamente en caso de tener un solo número (de varios dígitos) dentro de una cadena alfanumérica y no considera los puntos decimales que pudiera tener.

Este artículo se ha enfocado en encontrar una solución utilizando funciones de Excel pero es posible obtener resultados similares utilizando macros lo cual seguramente será el tema de alguna publicación futura. Mientras tanto descarga el libro de trabajo y experimenta con los ejemplos desarrollados en este artículo.

Artículos relacionados
Extraer contenido de una celda en Excel

49 pensamientos en “Extraer números de una celda en Excel

  1. jairo

    Tus articulos son excelentes.
    Me gustaria que escribieras un post donde nos enseñes una macro para extraer datos de una pagina web y pegarlos en nuestra planilla de excel. es decir automatizar un proceso

  2. Horacio Carmona

    ¡Gracias! esto es fabuloso!!!!!!!

  3. José Miguel

    EXCEL-ENTE…. MUCHAS MUCHAS GRACIAS.

  4. paco

    Excelente..es de mucha utilidad, este tipo de informacion .. gracias…

  5. Eduardo Manzo

    Moisés, es una fórmula sumamente interesante y me servirá para usar las fórmulas matriciales en mi trabajo diario. Sin embargo, por el uso que haces de la función EXTRAE, los números a recuperar deben estar colocados de manera continua. Pero, por las peculiaridades de la información que manejo, ¿Hay alguna forma de extraer dos cifras que se encuentren en una sola celda y poderlas sumar?
    Gracias por tu trabajo y tu respuesta

    1. Moisés Ortíz Autor

      Hola Eduardo, lamentablemente la solución presentada en este artículo solo aplica con un solo número (de dígitos contínuos). Un problema como el tuyo se resolvería de una manera más “fácil” utilizando una macro. Voy a apuntarlo en mi lista de sugerencias para escribir una solución alterna a este artículo usando VBA y que considere múltiples números dentro de la misma cadena.

  6. Lázaro

    Excelente explicación, hay una diferencia muy grande en poner fríamente la formula final a ir explicándola paso a paso como tú nos la has brindado, felicidades.

    Saludos
    Lázaro.

  7. Johnny

    Muchas gracias, esto ayuda mucho.

  8. Rosa Guacho

    GRACIAS por su exelente apoyo.
    Por favor Me gustaria que nos enseñe una macro para comvertir un valor numérico a texto.

  9. Erwin Vera

    Excelente…mil gracias!

  10. Luis Torres

    De verdad esta muy detallada la formula y la explicación esta de lujo, felicidades!!!

  11. jeans

    excelente

  12. Oscar

    Moises, gracias por tus lecciones: siempre me son de mucha ayuda. Sólo una pregunta. ¿Esto funciona con M.Excel 2007? Por que, desde “1. Encontrar la posición inicial del número”, me da siempre en la celda de la fórmula el error “#¡VALOR!”
    Gracias

    1. Moisés Ortíz Autor

      Hola Oscar, todas las funciones utilizadas en la fórmula están disponibles en Excel 2007. El error debe ser por otra razón.

  13. Israel

    Excelente, felicidades por compartir tu conocimiento.

  14. JESUS MELENDEZ

    GUARDO CELOSAMENTE, TODAS LAS INFORMACIONES DE CORTE PEDAGÓGICO QUE ME ENVÍAN PARA QUE YO APRENDA Excel. Mil Gracias

  15. Ayden Leon

    Muy bueno el ejemplo, Felicidades!!!, me gustaria saber como se prodría extraer este ejemplo. OPT5324G234, ya q en este ejemplo se encuentran los numero en diferentes posiciones…..Gracias….por la info..

    1. Moisés Ortíz Autor

      Hola Ayden, tal como respondí a “Eduardo Manzo” en un comentario anterior, la solución propuesta en este artículo no funciona para extraer números en diferentes posiciones dentro de la misma cadena. Espero publicar pronto una solución para esta variante.

  16. Eliezer Hilario

    Excelente artículo.
    Me has resuelto un gran problema.
    Gracias.

  17. federico

    te hago una pregunta ya que veo que hay algo parecido, tengo una lista gigante de excel de numeros como por ejemplo:

    456332;154009124
    154322118;155667900
    etc.. ahora lo que quiero yo es no solo quitar el punto y coma (” ; “) sino borrar el numero que hay al principio para que me quede
    154009124
    155667900

    hay alguna formula para hacer eso?

    1. Moisés Ortíz Autor

      Hola Federico, lo puedes hacer con la siguiente fórmula:
      =EXTRAE(A1,ENCONTRAR(“;”,A1)+1, LARGO(A1))

      1. Carlos

        Esta excelente la formula…..pero como le hago si lo que quiero eliminar es lo que sigue despues del “;”….es decir, que quedara así:
        456332;154009124 = 456332
        154322118;155667900 = 154322118
        Que básicamente es contrario a Largo( ).
        Mil Gracias por tu respuesta. Saludos!!

        1. Moisés Ortíz Autor

          Hola Carlos, en ese caso solo debes extraer los caracteres de la izquierda hasta el “;”. Puedes utilizar la siguiente fórmula:
          =IZQUIERDA(A1, ENCONTRAR(“;”, A1)-1)

          1. Carlos

            Excelente!!!!……Mil Gracias!!!!

  18. javier

    Muchísmas gracias de nuevo Moisés.
    Tus posts son de muchísima utilidad para mucha gente, incluído yo. Como decía un compañero…para cuando un post sobre extraer información contenida en una web y pasarla directamente al excel? Quizás sea mucho pedir

    muchas gracias

  19. Felipe Anaya

    Muchas gracias, me ayudo mucho a separar una tabla enorme de datos. Que bueno que existe gente como Ustedes.

  20. Felipe Ceballos

    Excelente información.
    Gracias por el aporte fue de gran ayuda.

    Saludos

  21. carlos

    Estoy haciendo una tabla para realizar cálculos entre fechas, en una celda tengo el número 551019 (aammdd) que es el resultado de la resta de dos fechas, aplicando la función SIFECHA. Ahora deseo separar en tres columnas distintas los años, meses y días, he probado con la opción de “texto en columnas” y no funciona. ¿me puedes ayudar?.
    Saludos

    1. Moisés Ortíz Autor

      Hola Carlos, si el cálculo lo hiciste con la función SIFECHA entonces el número 551019 representa el 20 de agosto del año 3408. No me queda claro porqué lo interpretas como (aammdd). En todo caso, para obtener el año, mes y día no se puede hacer con la opción “texto en columnas” ya que una fecha no es un texto sino un número. Te sugiero utilizar la función TEXTO y para eso de dejo un artículo que explica cómo hacerlo:
      http://exceltotal.com/extraer-informacion-de-una-fecha/

  22. NALLELY

    Como le hago para separar 150021048001 / 372905 y quedara = 150021048001 por pavor

    1. Moisés Ortíz Autor

      Hola Nallely, utiliza la siguiente fórmula:
      =IZQUIERDA(A1, ENCONTRAR(” /”,A1))

  23. Mario Morales

    Excelente informacion.
    Moisés como le hago para sacar en numero de IP de un texto.
    Ejemplo:
    Barcelona-192.168.150.5-Correo-Electronico

    1. Moisés Ortíz Autor

      Hola Mario, te recomiendo utilizar la función EXTRAE.
      Si todas las direcciones IP están delimitadas por un guión medio “-“, entonces puedes utilizar la siguiente fórmula:
      =EXTRAE(A1, ENCONTRAR(“-“, A1) + 1, ENCONTRAR(“-“, A1, ENCONTRAR(“-“, A1)+1) – ENCONTRAR(“-“, A1)-1)

  24. Eduardo Villa

    Hola gracias por el Tema es muy bueno, lo que yo busco es saber si una columna que contiene 10 dígitos de números telefónicos esta formada solo de números, es decir necesito comprobar que no vaya ninguna letra o punto o coma, etc. como podría hacerlo? de antemano muchas gracias.

    1. Moisés Ortíz Autor

      Hola Eduardo, utiliza la función ESNUMERO para validar que no existan letras. Para buscar la existencia de puntos o comas usa la función ENCONTRAR, si devuelve error quiere decir que no existen. Puedes unir todas las evaluaciones con la función Y, por ejemplo:
      =Y(ESNUMERO(A5), ESERROR(ENCONTRAR(“,”,A5)), ESERROR(ENCONTRAR(“.”,A5)))

      Solamente si la función Y devuelve VERDADERO querrá decir que dicho valor contiene solamente números. Es importante que los valores a evaluar tengan formato de texto, o de lo contrario la fórmula no detectará adecuadamente el punto o la coma.

  25. SANDRA

    Hola, estoy trabajando con este ejercicio pero tengo un duda, al ir escribiendo la función ENCONTRAR , debo teclear la llave que queda entre el paréntesis de apertura y el cero así como la llave entre el 9 y el paréntesis de cierre?
    Lo tecleo así
    =Encontrar({0,1,2,3,4,5,6,7,8,9}),A2) y luego doy Ctrl+Mayusc+Enter
    y me da error… #¡valor!
    En la sintaxis veo que si me escribe las llaves inicial y final
    ¿Qué estoy haciendo mal?
    Gracias

    1. Moisés Ortíz Autor

      Hola Sandra, estás haciendo todo bien.
      El hecho de que obtengas el error #¡VALOR! solo quiere decir que no se ha encontrado ningún número 0 (cero) dentro de la celda A2.

  26. Luis

    Moisés si tengo la siguiente situación:
    JR SANTA ROSA 610
    AV PROGRESO 458
    CA JUAN DE ORTIZ S/N
    ¿Cómo hago para extraer sólo el nombre de las ubicaciones, es decir: SANTA ROSA, PROGRESO y JUAN DE ORTIZ?
    Gracias por tu ayuda!

    1. Moisés Ortíz Autor

      Hola Luis, utiliza la función EXTRAE y para su segundo argumento deberás indicar la posición donde inicia el nombre de la ubicación que puedes encontrar de la siguiente manera:
      =ENCONTRAR(” “, A1)+1
      Lo más complicado será obtener el tercer argumento de la función EXTRAER. Para eso se me ocurra encontrar el último espacio en blanco que es lo que delimita el final del nombre de las ubicaciones. Para encontrar la posición del último espacio utiliza la fórmula descrita en el siguiente artículo:
      http://exceltotal.com/encontrar-caracteres-de-derecha-izquierda-en-excel/

      Una vez encontrado el último espacio será cuestión de restarle la posición del primer espacio para obtener la longitud en caracteres del nombre de la ubicación y que sería el tercer argumento de la función EXTRAE.

  27. Jorge Arturo

    Respetado Moises: Tengo un listado de texto en una sola columna excel con palabras que utilizan las 5 vocales una sola vez, como también palabras que utilizan mas de una vez una o varias vocales; Ejemplo estudiamos, estudiábamos; averiguo, averiguamos; acudiremos, acudiéramos; escudriñamos, escudriñaremos. Quiero despejar en un listado aparte ó detectar y señalizar, sólo las que utilizan una sola vez las 5 vocales del español.

    Sé que puedes darme claridad en esto y se lo agradezco.

    Responder

    1. Moisés Ortíz Autor

      Hola Jorge, esa no es una tarea sencilla ya que es necesario analizar carácter por carácter para saber si se trata de una vocal. Sería muy complicado explicarte la solución por este comentario, pero te recomiendo leer un artículo, que no habla sobre vocales sino sobre números, pero es posible modificar la formula descrita en dicho artículo para que funcionen con vocales:
      http://exceltotal.com/extraer-numeros-de-una-celda-en-excel/

      Una vez que hayas extraído las vocales podrás medir la longitud de dicha cadena con la función LARGO y aquellas que tengan una longitud de 1 serán las palabras que utilicen una sola vocal.

  28. karla

    Hola!!
    es de gran utilidad esta formula, pero en ingles son diferentes las funciones en excel en expañol usas EXTRAER, pero en Ingles EXTRACT, no exixte.
    cual es la funcion para excel en ingles?

    1. Moisés Ortíz Autor

      Hola Karla, el equivalente de la función EXTRAE en inglés es la función MID.

  29. Johanna

    Hola, Precisamente estoy intentando utilizar los numeros que extrai, para incluirlos en calculos numericos, y segui tus pasos sin embargo me sale el error. Este dato es obtenido por datos externos, para mantener actualizada la divisa, todo sale en una sola celda
    Compra Bolívares: 28.50
    Asi que solo necesito los numeros
    =EXTRAE(A1;19;26) y como resultado me da el 28.50 pero no he podido usarlo en el calculo.
    Muchisimas Gracias por tus tutorias

    1. Moises Ortiz Autor

      Hola Johanna, se debe a que al extraer los números aún es una cadena de texto y debes convertirla a un valor numérico. Por ejemplo:
      =VALOR(EXTRAE(A1;19;26))

      No me queda muy claro porque colocas 26 como el tercer argumento, pero si eso te está funcionando bien no hay problema, lo importante es que utilices la función VALOR para convertir al cadena en un valor numérico de manera que lo puedas utilizar en otro cálculo.

  30. JAIR CISNEROS I

    Excelente todo lo que nos a compartido Moisés, te felicito porque nos as ayudado enorme mente sin ningún interés,adicional a esto he tratado de ajustar la formula de extraer a una que yo necesito y no ha sido posible hacerla, te agradecería si me puedes ayudar con esa. Te explico, necesito extraer el ultimo dígito después de un guion. ejemplo 13485258233-8 necesito extraer el numero ocho 8. Muchas gracias por tu ayuda.
    Saludos,
    JC

    1. Moises Ortiz Autor

      Hola Jair, si dicho dígito siempre está al final sería suficiente utilizar la función DERECHA(A1, 1), pero si quieres hacer con la función EXTRAER, puedes utilizar la siguiente fórmula:
      =EXTRAE(A1, ENCONTRAR(“-“,A1)+1, 1)