Extraer Números de Una Celda en Excel - Excel Total

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 16

INICIO

FUNCIONES

ACERCA

Extraer nmeros de una


celda en Excel
En ocasiones tenemos celdas en nuestras hojas de Excel que contienen una
cadena de texto alfanumrica y necesitamos extraer solamente la parte
numrica contenida dentro de dicha cadena. La solucin a este problema la
obtendremos en dos pasos.
1. Encontrar la posicin inicial del nmero dentro del texto.
2. Encontrar la longitud del nmero a extraer.
Por ejemplo, para extraer los nmeros de una celda que tiene el texto
ABC4567DEF debemos encontrar la posicin del primer nmero que es la
posicin 4 y a partir de esa posicin extraer 4 caracteres.

1. Encontrar la posicin inicial del nmero

Bscanos en Facebook

Excel Total
Me gusta

A 48 992 personas les gusta Excel Total.

Comenzamos por encontrar el primer carcter dentro de la cadena que sea


un dgito entre cero y nueve. Este procedimiento lo haremos utilizando tres
funciones. La primera funcin a utilizar ser la funcin ENCONTRAR donde el
primer argumento ser una matriz que contenga los nueve dgitos 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 dgitos como para separar los
argumentos de la funcin. Al terminar de escribir la frmula pulsar la
combinacin de teclas Ctrl + Mays + Entrar ya que sta es una frmula
matricial. Si la cadena de texto que tenemos en la celda A1 es
ABC4567DEF, entonces esta frmula nos devolver una matriz con diez
resultados:

Plug-in social de Facebook

Sigue a Excel Total


Para cada dgito que hemos buscado obtendremos un resultado y por esa
razn los primeros cuatro elementos del resultado son el error #VALOR! que
significa que la funcin no encontr los dgitos 0,1,2 y 3. Sin embargo, para
los dgitos 4,5,6, y 7 la funcin ENCONTRAR nos devuelve su posicin dentro
de la cadena. Para los dgitos 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 frmulas matriciales sea
un tanto avanzado para ti, pero contina leyendo porque al final tendremos la
frmula exacta que debes utilizar para resolver este problema.
Eliminar los errores del resultado
La segunda funcin que utilizaremos ser la funcin SI.ERROR de manera
que podamos eliminar los errores contenidos en la matriz de resultados. En
caso de que la funcin SI.ERROR encuentre el error #VALOR! le pediremos
que lo sustituya por una cadena de texto vaca:
=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 vaca donde antes apareca el error
#VALOR!:

Ahora que ya tenemos la matriz de resultados formada solo por nmeros y


cadenas vacas, podemos utilizar la funcin MIN para conocer la posicin
menor dentro de la cadena donde se encuentra un dgito.
Obtener el valor mnimo
Solo debemos agregar la funcin MIN a la frmula anterior para obtener la
posicin donde comienza el nmero dentro de la cadena alfanumrica.
=MIN(SI.ERROR(ENCONTRAR({0,1,2,3,4,5,6,7,8,9},A1),""))
Ya que esta frmula me devuelve un solo resultado, ser la frmula que
introducir en la celda B2 para obtener la posicin inicial. Recuerda que
debemos pulsar las teclas Ctr + Mays + Entrar al terminar de introducir la
frmula.

Este resultado es correcto porque nos indica que el primer dgito est
ubicado en la posicin 4 de nuestra cadena alfanumrica. Con esto hemos
solucionado la primer parte del problema, ahora solo nos resta saber la
cantidad de dgitos a extraer.

2. Encontrar la longitud del nmero


Para obtener la cantidad de dgitos a extraer utilizaremos tambin tres
funciones de Excel y el mtodo para obtener la solucin ser utilizar tambin
una frmula matricial. El primer paso es obtener cada carcter de manera
individual con la funcin EXTRAE:

=EXTRAE(A1,FILA($1:$99),1)
La parte ms interesante de esta frmula es el segundo argumento de la
funcin EXTRAE donde debemos colocar la posicin del carcter que
deseamos extraer. Para ese segundo argumento utilizo la funcin FILA con el
rango $1:$99 lo cual har que la funcin EXTRAE me devuelva cada carcter
de la cadena original como parte de una matriz hasta un mximo de 99
caracteres.

He colocado el nmero 99 pensando que no tendremos una cadena de texto


mayor a esa longitud, pero si tienes una cadena ms grande ser suficiente
con remplazar el nmero 99 por un nmero ms grande. Cada elemento de
la matriz de resultados ser de tipo texto pero necesito convertirlo en nmero
para poder contar cada elemento numrico correctamente, por lo que debo
agregar una multiplicacin por uno a la frmula anterior:
=1*EXTRAE(A1,FILA($1:$99),1)
Al hacer la multiplicacin, los valores en la matriz de resultados se modifican.
Aquellos caracteres que no son nmeros devuelven un error, pero aquellos
que s son nmeros permanecen con su valor numrico dentro de la matriz:

Esta multiplicacin era necesaria porque ahora utilizar la funcin CONTAR


para saber cuntos elementos de la matriz de resultado son nmeros. La
frmula a utilizar es la siguiente:
=CONTAR(1*EXTRAE(A1,FILA($1:$99),1))
No olvides que debemos pulsar las teclas Ctrl + Mays + Entrar al terminar
de introducir la frmula. Yo colocar esta frmula en la celda C1 donde
obtengo el siguiente resultado:

De esta manera concluimos con la segunda parte de la solucin. Ahora solo


nos resta utilizar ambos resultados para extraer el nmero completo.

Extraer nmeros de una celda en Excel


Ya hemos solucionado la parte ms compleja de este problema. Solo
debemos utilizar la funcin EXTRAE para extraer los nmeros de la cadena
de texto que se encuentra en la celda A1. La frmula es muy sencilla:

Para probar que esta tcnica funciona para cualquier otra cadena
aplicaremos nuestras frmulas a varias celdas que contienen una cadena
alfanumrica:

Para finalizar te mostrar la frmula integrada, es decir, la frmula que nos


ayuda a extraer nmeros de una celda en un solo paso y que es
simplemente la integracin de las frmulas 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 frmula matricial por lo que debemos pulsar la
combinacin de teclas Ctrl + Mays + Entrar. El resultado ser el mismo que
hemos obtenido con las frmulas anteriores.

Como puedes observar en la columna E, los nmeros extrados siguen


siendo texto. Si deseas convertirlos en nmeros se puede multiplicar el
resultado de la frmula anterior por 1 de manera puedan ser incluidos en

clculos numricos. Es importante mencionar que esta frmula funciona


solamente en caso de tener un solo nmero (de varios dgitos) dentro de una
cadena alfanumrica y no considera los puntos decimales que pudiera tener.
Este artculo se ha enfocado en encontrar una solucin utilizando funciones
de Excel pero es posible obtener resultados similares utilizando macros lo
cual seguramente ser el tema de alguna publicacin futura. Mientras tanto
descarga el libro de trabajo y experimenta con los ejemplos desarrollados en
este artculo.
Artculos relacionados
Extraer contenido de una celda en Excel
Por Moiss Ortz el 21 de febrero del 2013.

49 pensamientos en Extraer nmeros de una


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

Horacio Carmona
Gracias! esto es fabuloso!!!!!!!

Jos Miguel
EXCEL-ENTE. MUCHAS MUCHAS GRACIAS.

paco

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


gracias

Eduardo Manzo
Moiss, es una frmula sumamente interesante y me servir para
usar las frmulas matriciales en mi trabajo diario. Sin embargo, por
el uso que haces de la funcin EXTRAE, los nmeros a recuperar
deben estar colocados de manera continua. Pero, por las
peculiaridades de la informacin 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

Moiss Ortz

Autor

Hola Eduardo, lamentablemente la solucin presentada


en este artculo solo aplica con un solo nmero (de
dgitos contnuos). Un problema como el tuyo se
resolvera de una manera ms fcil utilizando una
macro. Voy a apuntarlo en mi lista de sugerencias para
escribir una solucin alterna a este artculo usando VBA
y que considere mltiples nmeros dentro de la misma
cadena.

Lzaro
Excelente explicacin, hay una diferencia muy grande en poner
framente la formula final a ir explicndola paso a paso como t nos
la has brindado, felicidades.
Saludos
Lzaro.

Johnny
Muchas gracias, esto ayuda mucho.

Rosa Guacho
GRACIAS por su exelente apoyo.
Por favor Me gustaria que nos ensee una macro para comvertir un
valor numrico a texto.

Moiss Ortz

Autor

Hola Rosa, puedes utilizar una macro que publiqu hace


algn tiempo. Te dejo el vnculo a ese artculo:
http://exceltotal.com/convertir-numeros-a-letras-en-excel/

Erwin Vera
Excelentemil gracias!

Luis Torres
De verdad esta muy detallada la formula y la explicacin esta de
lujo, felicidades!!!

jeans
excelente

Oscar
Moises, gracias por tus lecciones: siempre me son de mucha
ayuda. Slo una pregunta. Esto funciona con M.Excel 2007? Por
que, desde 1. Encontrar la posicin inicial del nmero, me da
siempre en la celda de la frmula el error #VALOR!
Gracias

Moiss Ortz

Autor

Hola Oscar, todas las funciones utilizadas en la frmula


estn disponibles en Excel 2007. El error debe ser por
otra razn.

Israel
Excelente, felicidades por compartir tu conocimiento.

JESUS MELENDEZ
GUARDO CELOSAMENTE, TODAS LAS INFORMACIONES DE

CORTE PEDAGGICO QUE ME ENVAN PARA QUE YO


APRENDA Excel. Mil Gracias

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

Moiss Ortz

Autor

Hola Ayden, tal como respond a Eduardo Manzo en un


comentario anterior, la solucin propuesta en este
artculo no funciona para extraer nmeros en diferentes
posiciones dentro de la misma cadena. Espero publicar
pronto una solucin para esta variante.

Eliezer Hilario
Excelente artculo.
Me has resuelto un gran problema.
Gracias.

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?

Moiss Ortz

Autor

Hola Federico, lo puedes hacer con la siguiente frmula:


=EXTRAE(A1,ENCONTRAR(;,A1)+1, LARGO(A1))

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 bsicamente es contrario a Largo( ).
Mil Gracias por tu respuesta. Saludos!!

Moiss Ortz

Autor

Hola Carlos, en ese caso solo


debes extraer los caracteres de la
izquierda hasta el ;. Puedes utilizar
la siguiente frmula:
=IZQUIERDA(A1, ENCONTRAR(;,
A1)-1)

Carlos
Excelente!!!!Mil
Gracias!!!!

javier
Muchsmas gracias de nuevo Moiss.
Tus posts son de muchsima utilidad para mucha gente, includo yo.
Como deca un compaeropara cuando un post sobre extraer
informacin contenida en una web y pasarla directamente al excel?
Quizs sea mucho pedir
muchas gracias

Moiss Ortz

Autor

Hola Javier, Gracias por tu comentario. De dejo un


vnculo a un artculo sobre importacin de datos con una
consulta Web:
http://exceltotal.com/importar-datos-con-una-consultaweb/

Felipe Anaya
Muchas gracias, me ayudo mucho a separar una tabla enorme de

datos. Que bueno que existe gente como Ustedes.

Felipe Ceballos
Excelente informacin.
Gracias por el aporte fue de gran ayuda.
Saludos

carlos
Estoy haciendo una tabla para realizar clculos entre fechas, en
una celda tengo el nmero 551019 (aammdd) que es el resultado
de la resta de dos fechas, aplicando la funcin SIFECHA. Ahora
deseo separar en tres columnas distintas los aos, meses y das,
he probado con la opcin de texto en columnas y no funciona.
me puedes ayudar?.
Saludos

Moiss Ortz

Autor

Hola Carlos, si el clculo lo hiciste con la funcin


SIFECHA entonces el nmero 551019 representa el 20
de agosto del ao 3408. No me queda claro porqu lo
interpretas como (aammdd). En todo caso, para obtener
el ao, mes y da no se puede hacer con la opcin texto
en columnas ya que una fecha no es un texto sino un
nmero. Te sugiero utilizar la funcin TEXTO y para eso
de dejo un artculo que explica cmo hacerlo:
http://exceltotal.com/extraer-informacion-de-una-fecha/

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

Moiss Ortz

Autor

Hola Nallely, utiliza la siguiente frmula:


=IZQUIERDA(A1, ENCONTRAR( /,A1))

Mario Morales

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

Moiss Ortz

Autor

Hola Mario, te recomiendo utilizar la funcin EXTRAE.


Si todas las direcciones IP estn delimitadas por un
guin medio -, entonces puedes utilizar la siguiente
frmula:
=EXTRAE(A1, ENCONTRAR(-, A1) + 1,
ENCONTRAR(-, A1, ENCONTRAR(-, A1)+1)
ENCONTRAR(-, A1)-1)

Eduardo Villa
Hola gracias por el Tema es muy bueno, lo que yo busco es saber
si una columna que contiene 10 dgitos de nmeros telefnicos
esta formada solo de nmeros, es decir necesito comprobar que
no vaya ninguna letra o punto o coma, etc. como podra hacerlo?
de antemano muchas gracias.

Moiss Ortz

Autor

Hola Eduardo, utiliza la funcin ESNUMERO para validar


que no existan letras. Para buscar la existencia de
puntos o comas usa la funcin ENCONTRAR, si
devuelve error quiere decir que no existen. Puedes unir
todas las evaluaciones con la funcin Y, por ejemplo:
=Y(ESNUMERO(A5), ESERROR(ENCONTRAR(,,A5)),
ESERROR(ENCONTRAR(.,A5)))
Solamente si la funcin Y devuelve VERDADERO querr
decir que dicho valor contiene solamente nmeros. Es
importante que los valores a evaluar tengan formato de
texto, o de lo contrario la frmula no detectar
adecuadamente el punto o la coma.

SANDRA
Hola, estoy trabajando con este ejercicio pero tengo un duda, al ir
escribiendo la funcin ENCONTRAR , debo teclear la llave que
queda entre el parntesis de apertura y el cero as como la llave
entre el 9 y el parntesis 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

Moiss Ortz

Autor

Hola Sandra, ests haciendo todo bien.


El hecho de que obtengas el error #VALOR! solo quiere
decir que no se ha encontrado ningn nmero 0 (cero)
dentro de la celda A2.

Luis
Moiss si tengo la siguiente situacin:
JR SANTA ROSA 610
AV PROGRESO 458
CA JUAN DE ORTIZ S/N
Cmo hago para extraer slo el nombre de las ubicaciones, es
decir: SANTA ROSA, PROGRESO y JUAN DE ORTIZ?
Gracias por tu ayuda!

Moiss Ortz

Autor

Hola Luis, utiliza la funcin EXTRAE y para su segundo


argumento debers indicar la posicin donde inicia el
nombre de la ubicacin que puedes encontrar de la
siguiente manera:
=ENCONTRAR( , A1)+1
Lo ms complicado ser obtener el tercer argumento de
la funcin 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
posicin del ltimo espacio utiliza la frmula descrita en
el siguiente artculo:
http://exceltotal.com/encontrar-caracteres-de-derechaizquierda-en-excel/
Una vez encontrado el ltimo espacio ser cuestin de
restarle la posicin del primer espacio para obtener la
longitud en caracteres del nombre de la ubicacin y que
sera el tercer argumento de la funcin EXTRAE.

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
tambin palabras que utilizan mas de una vez una o varias vocales;
Ejemplo estudiamos, estudibamos; averiguo, averiguamos;
acudiremos, acudiramos; escudriamos, escudriaremos. Quiero
despejar en un listado aparte detectar y sealizar, slo las que
utilizan una sola vez las 5 vocales del espaol.
S que puedes darme claridad en esto y se lo agradezco.
Responder

Moiss Ortz

Autor

Hola Jorge, esa no es una tarea sencilla ya que es


necesario analizar carcter por carcter para saber si se
trata de una vocal. Sera muy complicado explicarte la
solucin por este comentario, pero te recomiendo leer un
artculo, que no habla sobre vocales sino sobre nmeros,
pero es posible modificar la formula descrita en dicho
artculo para que funcionen con vocales:
http://exceltotal.com/extraer-numeros-de-una-celda-enexcel/
Una vez que hayas extrado las vocales podrs medir la
longitud de dicha cadena con la funcin LARGO y
aquellas que tengan una longitud de 1 sern las palabras
que utilicen una sola vocal.

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

Moiss Ortz

Autor

Hola Karla, el equivalente de la funcin EXTRAE en


ingls es la funcin MID.

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 Bolvares: 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

Moises Ortiz

Autor

Hola Johanna, se debe a que al extraer los nmeros an


es una cadena de texto y debes convertirla a un valor
numrico. 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 funcin
VALOR para convertir al cadena en un valor numrico de
manera que lo puedas utilizar en otro clculo.

JAIR CISNEROS I
Excelente todo lo que nos a compartido Moiss, te felicito porque
nos as ayudado enorme mente sin ningn inters,adicional a esto
he tratado de ajustar la formula de extraer a una que yo necesito y
no ha sido posible hacerla, te agradecera si me puedes ayudar
con esa. Te explico, necesito extraer el ultimo dgito despus de un
guion. ejemplo 13485258233-8 necesito extraer el numero ocho 8.
Muchas gracias por tu ayuda.
Saludos,
JC

Moises Ortiz

Autor

Hola Jair, si dicho dgito siempre est al final sera


suficiente utilizar la funcin DERECHA(A1, 1), pero si
quieres hacer con la funcin EXTRAER, puedes utilizar
la siguiente frmula:
=EXTRAE(A1, ENCONTRAR(-,A1)+1, 1)

También podría gustarte