Función definida por el usuario VBA, Extraer Números

Excel permite crear Funciones definidas por el usuario, de esta forma cuando necesitamos un cálculo que no está dentro de ninguna función de Excel, podemos crear una propia.

Por ejemplo, si necesitamos extraer los números de una celda que contenga un dato con texto y números, debemos definir una función propia ya que Excel no contempla esta posibilidad.

Imaginemos la columna A con códigos y necesitamos sólo los números de éstos en la columna B.

ExtraerNúmeros 3

Para resolverlo podemos crear una función propia a través del editor de VBA.

Una vez abierto, ALT+F11, desde el menú Insertar > Procedimiento, marcas la opción Función , copia el código siguiente, (recuerda que cuando aparece ( ) antes del texto es una aclaración).

Public Function EXTRAER_NÚMEROS(Celda As Variant)
‘Función para extraer los números de una celda que_
‘contenga texto y números.
‘Por ejemplo un código: XM12JAS45Z09 12 caracteres, resultado 124509

‘1º Declaramos las variables

Dim Largo As Integer    ‘Almacena el número de caracteres de la celda
Dim i As Integer        ‘Lo utiliza para crear el bucle que busque los números
Dim Valor As String     ‘Almacena el número
Dim Valor1 As String    ‘Lo utiliza para unir todos los números en el bucle

Application.Volatile
                        ‘Volatile: se actualizará cuando se efectúe un cálculo_
                        ‘en alguna celda de la hoja en la que aparezca esta función.

Largo = Len(Celda)      ‘Definir la longitud de caracteres de la celda 12

‘2º Comprobar si es número, cada uno de los caracteres de la celda

For i = 1 To Largo      ‘ Repetirá el bucle 12 veces comprobando cada caracter
    Valor = Mid(Celda, i, 1) ‘Argumentos de la función Mid(Texto,_
                             ‘posición inicial, num caracteres)
    
    If Asc(Valor) >= 48 And Asc(Valor) <= 57 Then ‘ Comprueba si es número o texto
    Valor1 = Valor1 & Valor
    Else
    End If
Next i

‘El valor concatenado de todos los números los asignamos
‘como resultado de la función

EXTRAER_NÚMEROS = Valor1

End Function

Una vez copiado el código, cierra el editor VBA, la función estará disponible dentro de la categoría Definida por el usuario.

ExtraerNúmeros 2

Ya puedes usarla para extraer los números de las celdas.

Descargar archivo con ejemplo

Función ExtraerNúmeros VBA

4 respuestas a “Función definida por el usuario VBA, Extraer Números

Add yours

    1. Hola acabo de descargar el archivo y funciona bien.

      Es una función, luego debe estar en las funciones definidas por el usuario. Comprueba que has habilitado las macros.

      Gracias por seguir el blog.

    1. Hola Hernan,

      Prueba este código:
      ——————————————————————-
      Function ExtraerTexto(celda As Range) As String
      Dim txt As String

      For i = 1 To Len(celda.Value)

      If Not IsNumeric(Mid(celda.Value, i, 1)) And Mid(celda.Value, i, 1) «:» And Mid(celda.Value, i, 1) «-» Then
      txt = txt & Mid(celda.Value, i, 1)
      End If
      Next
      ExtraerTexto = txt

      End Function
      ————————————————————————–
      Gracias por seguir el Blog

Replica a tanke_lleno Cancelar la respuesta

Crea una web o blog en WordPress.com

Subir ↑