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.
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.
Ya puedes usarla para extraer los números de las celdas.
Descargar archivo con ejemplo
HOLA, NO ME DEJA USAR EL PROCEDIMIENTO, SALE INACTIVO EN LA PESTAÑA.
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.
EXCELENTE! TENE UN APERO PARA EXTRAER TEXTO?
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