Facebook Twitter Gplus Flickr Pinterest LinkedIn YouTube RSS
Home Excel vba Crear funciones personalizadas en Excel
formats

Crear funciones personalizadas en Excel

Una función, primeramente, es una fórmula predefinida en Excel que opera sobre uno o más argumentos. Por ejemplo: SUMA, PROMEDIO, BUSCARV, son funciones propias de la aplicación que cumplen con un objetivo específico. En esta ocasión veremos cómo crear funciones personalizadas en Excel, es decir, con nombres que nosotros mismo definamos. Crearemos tres funciones, obtenerComentario, colorCelda y calculoAreaCirulo.

Primeramente creamos un libro de Excel y nos vamos con el atajo Ctlr + F11 al IDE de Visual Basic para aplicaciones. Dentro del editor, en la parte izquierda ubicamos el VBAProject con el nombre de nuestro archivo. Damos click derecho e insertamos un módulo nuevo. Al crear el módulo nuevo, nos aparecerá un área en blanco donde escribiremos nuestras funciones.

image

Dentro del área en blanco, escribiremos las siguientes líneas. Recordemos que el texto verde son los comentarios explicativos:

Function obtenerComentario(celda As Range)
obtenerComentario = celda.Comment.Text
'Esta función nos permitirá obtener el comentario de la celda en cuestión
End Function
'
Function colorCelda(celda As Range)
colorCelda = celda.Interior.ColorIndex
'Esta función nos permitirá saber el número de índice del color de la celda.
'Útil para ordenar por colores.
End Function
'
Function calculoAreaCirculo(radio As Long)
calculoAreaCirculo = 3.1416 * radio ^ 2
'Esta función nos permite calcular el área de un círculo.
'El único argumento que nos pide es el radio, ya que el PI y el cuadrado vienen dentro de la misma función
End Function

Para definir que es una función, utilizamos la palabra reservada Function. Y los argumentos aparecen dentro de los paréntesis.

Para poder utilizar estas funciones en Excel, basta con escribir dentro del mismo archivo el nombre de la función creada y entre paréntesis la celda que queramos calcular. Por ejemplo:

=obtenerComentario(A1)

=colorCelda(A2)

=calculoAreaCirculo(A3)

En la celda A1 hay agregado un comentario, la celda A2 tiene color de fondo y en la celda A3 está el valor del radio del círculo.

:: Descargar el ejemplo

 
 Share on Facebook Share on Twitter Share on Reddit Share on LinkedIn
11 Comments  comments 
  • humberto

    Hola, yo tengo algunas funciones personalizadas de excel y las uso bastante. Pero quisiera que al ingresar la fórmula por teclado en alguna celda cualquiera, excel me muestre los argumentos de la misma…
    ¿se puede hacer eso?

    gracias

    • sergioacamposh

      Se puede, pero tendrá que ser mediante programación de macros. De qué tipo son tus fórmulas/funciones ??

  • Andres

    Sergio Buenos dias, me parece muy interesante el articulo sobre las funciones personalizadas. Sería bueno que ahondaran mas en la pregunta de Humberto ya que tambien me gustaria saber. ¿Como colocarle los argumentos a las funciones personalizadas en Excel?

    Muchas Gracias.

  • Pingback: EXCELeINFO – Top 10 de publicaciones vistas en 2011 « EXCELeINFO – Excel vba e información

  • Jorge

    Saludos, la creacion de funciones personalizadas en Excel es bastante fácil, dejo un ejemplo:

    Function Producto(a, b, c)
    Producto = a*b*c
    End Function

    En la primera linea indicas el nombre de tu función “Producto”
    Entre parentesis ingresas los parametros que debe contener a,b y c.
    En la linea 2 tienes que indicar que calculará tu funcion, en este caso calculará a*b*c

    Espero les ayude,

  • Pingback: Crear categoría y descripción para funciones personalizadas UDF en Excel « EXCELeINFO – Excel vba e información

  • JOSÉ AGUERO

    FELIZ AÑO PARA TODOS. Buenas Tardes. Quiero contar los datos de un rango de una determinada persona de una lista de funcionarios; cada funcionario tiene un código en esa lista; la lista son reportes diarios de actividades, los datos los tengo de forma horizontal. Solo quiero saber por ejemplo cuantas actividades reportó PEDRO en un reporte equiz. Otro ejemplo mas completo:
    COD EMPLEADO ACTIV1 ACTIV2 ACTIV3 ACTIV4 TOTAL
    123 PEDRO NDF 3459 ÑL09 12LK 04
    258 JOSE 7863 KJHG 87U6 03
    369 JUAN ER43 9876 YUTR 03
    123 PEDRO 234 OIUY 765 UJ76 04
    147 CARLOS ERT QWE 02
    123 PEDRO 9832 DER 02

    Bien; solo quiero saber cuantas actividades realizó pedro en la jornada, utilizando su COD para identificarlo.

    Gracias.

    • Sergio Alejandro Campos

      Tomando en cuenta los siguientes datos:

      El rango de tu tabla es A1:G7
      La columna de COD es la A
      La columa de actividades totales es G

      La fórmula quedaría así:

      =SUMAR.SI($A$1:$G$7,C11,G1:G7)

      En el siguiente link puedes bajar un ejemplo sencillo:

  • Rodrigo Damian Orlando

    Hola. Ya estoy familiarizado con vba, soy programador ademas.

    Y siempre trabaje con macros, por ahi no tanto directo desde el Office sino consumiéndolos desde alguna app.

    El tema es que ahora mi viejo (padre) me pregunto sobre esto, y me dio curiosidad, de que forma se podría poner la función que este disponible para todo el Excel como si fuera una función nativa más?

    Muchas gracias.

Sistema Wordpress corriendo bajo... Windows Server 2008 R2
Follow

Get every new post delivered to your Inbox

Join other followers