Sie sind auf Seite 1von 3

Macro para extraer nmeros de una celda

Algunas semanas atrs publiqu un artculo que utilizaba funciones para extraer nmeros de
una celda en Excel. Sin embargo, dicho mtodo tiene ciertas restricciones como el hecho de
extraer solo el primer bloque de nmeros encontrado en la cadena.
Hoy haremos una macro para extraer todos los nmeros de una celda sin importar su posicin
dentro de la cadena y para ello utilizaremos la funcin IsNumeric la cual nos permite saber si
el carcter analizado es un valor numrico.

Funcin IsNumeric en VBA


La funcin IsNumeric tiene un funcionamiento muy sencillo ya que tiene un solo argumento
y que es el valor que deseamos evaluar.

Como resultado obtendremos un valor verdadero (TRUE) en caso de que el argumento sea un
valor numrico y un valor falso (FALSE) en caso contrario. Para nuestro ejemplo aplicaremos
la funcin IsNumeric a cada carcter contenido en la celda.

Recorrer la cadena de texto


Para analizar cada carcter en una cadena de texto ser necesario utilizar el bucle For Next y
colocar como lmite el nmero de caracteres de la cadena que podemos obtener fcilmente con
la funcin Len.

La instruccin For Next realizar tantos ciclos como nmeros de caracteres haya en la cadena
y en cada ciclo la variable i aumentar de valor hasta alcanzar el nmero mximo de
caracteres. Ahora que ya sabemos cmo recorrer la cadena de texto debemos extraer
efectivamente cada uno de los caracteres utilizando la funcin Mid.

Funcin Mid en VBA


La funcin Mid en VBA nos permite extraer una subcadena indicando su posicin de inicio y
la longitud. Esta funcin tiene 3 argumentos, el primero de ellos es la cadena original, el
segundo la posicin donde iniciar la extraccin y el tercer argumento es la cantidad de
caracteres a extraer.

Para nuestro ejemplo utilizaremos la funcin Mid para extraer un solo carcter a la vez por lo
que estar dentro de nuestro bucle For Next explicado en la seccin anterior. A continuacin
presento el cdigo completo que nos ayudar a extraer nmeros de una celda en Excel
utilizando una macro.

Funcin VBA para extraer nmeros en Excel


Si has ledo con detenimiento las secciones anteriores encontrars muy fcil entender el
siguiente cdigo:
1
2 Function EXTRAENUM(cadena As String)
3
'Variable numeros contendr solo nmeros de la cadena
4 Dim numeros As String
5 numeros = ""
6
7 'Recorrer la cadena
8 For i = 1 To Len(cadena)
9
'Evaluar SI el carcter actual es un nmero
10
If IsNumeric(Mid(cadena, i, 1)) Then
11
12
'Concatenar valor numrico a la variable numeros
13
numeros = numeros & Mid(cadena, i, 1)
14
End If
15
Next
16
17
los nmeros encontrados
18'Devolver
EXTRAENUM = numeros
19
20End Function
21

22
Utilizando esta nueva funcin podremos analizar el valor de una celda carcter por carcter y
extraer todos los valores numricos contenidos en ella. En la siguiente imagen puedes
observar algunos ejemplos de uso de la funcin recin creada:

Es importante mencionar que el resultado de nuestra nueva funcin es una cadena de texto y
por eso en la imagen anterior vemos el valor de las celdas de la columna B alineados a la
izquierda. Si queremos convertir inmediatamente en nmero el resultado de la funcin
EXTRAENUM, entonces podemos multiplicarlo por uno.

Puedes notar la diferencia con el resultado anterior porque en este caso los valores estn
alineados a la derecha indicando que Excel los ha reconocido como valores numricos y estn
listos para realizar cualquier clculo con ellos.
Puedes descargar el libro de Excel que he utilizado en la creacin de la nueva funcin para
extraer nmeros en Excel y probarla con tus propios datos. Si quieres leer un poco ms sobre
cmo extraer datos de una celda utilizando funciones de Excel te recomiendo leer el artculo
Extraer contenido de una celda en Excel.

Das könnte Ihnen auch gefallen