3
Macro para extraer números de una celda Algunas semanas atrás publiqué un artículo que utilizaba funciones para extraer números de una celda en Excel. Sin embargo, dicho método tiene ciertas restricciones como el hecho de extraer solo el primer bloque de números encontrado en la cadena. Hoy haremos una macro para extraer todos los números de una celda sin importar su posición dentro de la cadena y para ello utilizaremos la función IsNumeric la cual nos permite saber si el carácter analizado es un valor numérico. Función IsNumeric en VBA La función 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 numérico y un valor falso (FALSE) en caso contrario. Para nuestro ejemplo aplicaremos la función IsNumeric a cada carácter contenido en la celda. Recorrer la cadena de texto Para analizar cada carácter en una cadena de texto será necesario utilizar el bucle For Next y colocar como límite el número de caracteres de la cadena que podemos obtener fácilmente con la función Len. La instrucción For Next realizará tantos ciclos como números de caracteres haya en la cadena y en cada ciclo la variable i aumentará de valor hasta alcanzar el número máximo de caracteres. Ahora que ya sabemos cómo recorrer la cadena de texto debemos extraer efectivamente cada uno de los caracteres utilizando la función Mid.

Macro Para Extraer Números de Una Celda

  • Upload
    comr51

  • View
    231

  • Download
    3

Embed Size (px)

DESCRIPTION

Ayuda para extraer número de una celda en Excel

Citation preview

  • 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

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    Function EXTRAENUM(cadena As String) 'Variable numeros contendr solo nmeros de la cadena Dim numeros As String numeros = ""

    'Recorrer la cadena For i = 1 To Len(cadena)

    'Evaluar SI el carcter actual es un nmero If IsNumeric(Mid(cadena, i, 1)) Then

    'Concatenar valor numrico a la variable numeros numeros = numeros & Mid(cadena, i, 1)

    End If Next 'Devolver los nmeros encontrados EXTRAENUM = numeros

    End Function

  • 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.