Archive

Posts Tagged ‘Function’

Crear categoría y descripción para funciones personalizadas UDF en Excel

November 24, 2012 8 comments

En un artículo del 2010 explicaba cómo Crear funciones personalizadas en Excel y tener nuestras propias funciones escritas por nosotros mismos.

En esta ocasión comparto un código en vba que nos permitirá crear una categoría personalizada y agrupar nuestras UDF’s (User Define Function), así como darles una descripción a los argumentos que tendrán y a la misma función.

Tendremos 3 partes principales para tener la categoría y las descripciones de la función:

  1. Mandar llamar la función desde el evento Open del archivo.
  2. El código que asignará los elementos de la función.
  3. El código de la función.

Código

En el evento Open del objeto ThisWorkbook asignamos el código siguiente.

Private Sub Workbook_Open()
    Call DescribeFunctionEXCELeINFOCOLORCELDA
End Sub

En un módulo normal.

'El código que describe la categoría de la función y sus argumentos
Private Sub DescribeFunctionEXCELeINFOCOLORCELDA()
    Dim NombreFunc As String        'nombre de la función
    Dim DescFunc As String          'descrición de la función
    Dim Categoria As String         'categoría de la función
    Dim DescArg(1 To 3) As String   'descripción de los argumentos
    '
    NombreFunc = "EXCELeINFOCOLORCELDA"
    DescFunc = "Devuelve el índice de color de la celda seleccioada"
    Categoria = "EXCELeINFO"    'Text category
    DescArg(1) = "Es la celda de donde se obtendrá el índice de color"
    '
    Application.MacroOptions _
            Macro:=NombreFunc, _
            Description:=DescFunc, _
            Category:=Categoria, _
            ArgumentDescriptions:=DescArg
End Sub
'
'Función personalizada UDF
Function EXCELeINFOCOLORCELDA(celda As Range)
'
' EXCELeINFOCOLORCELDA Función
' Devuelve el color de la celda de la celda seleccionada
'
    EXCELeINFOCOLORCELDA = celda.Interior.ColorIndex
    '
End Function

Imágenes

image

image

Función personalizada Concatenar en Excel

February 25, 2011 4 comments

Twittear este post Compartir en Facebook

La función Concatenar de Excel se me hace realmente lenta al momento de tener que unir varias celdas, por lo que me vi a la tarea de realizar una función personalizada en la que sólo elijo el rango que quiero unir y listo!.

He aquí el código:

Function EXCELeINFOCONCATENAR(rango As Range) As String
Dim t As String
Application.Volatile
For Each celda In rango
    t = t & " " & celda.Value
Next celda
EXCELeINFOCONCATENAR = Trim(t)
End Function

Ordenar por color en Excel

October 26, 2010 2 comments

Twittear este post Compartir en Facebook

Hasta antes de Excel 2007, había la necesidad de ordenar nuestros datos, pero color. La labor no era nada fácil, por que había que programar una macro o una función para hacerla.

Ordenar por color en Excel 2003

  • Primeramente tenemos nuestra tabla con los datos, y una columna, por lo regular con color.
  • Entramos al editor de Visual Basic para aplicaciones con la combinación de telclas {Alt + F11}.
  • Insertamos un módulo nuevo en nuestro proyecto (archivo).
  • Pegamos el siguiente código:
Function ObtenerColor(celda As Range)
ObtenerColor = celda.Interior.ColorIndex
'celda es nuestra parámetro, que es un objeto Range
'Interior es una propiedad del objeto Range
'ColorIndex es una propiedad de Interior que nos devuelve el índice de color
End Function
  • En nuestro archivo de Excel, ponemos la fórmula =ObtenerColor(C4).
  • Y nos mostrará el índice de color que hayamos elegido.
  • Entramos en menú Datos > Ordenar, y ordenamos por la columa donde están los números de índice.

Ordenar por color en Excel 2007

Irónicamente en la versión 2007 y adelante, Microsoft escuchó a los usuarios e hizo esta labor más sencilla:

  • Elegimos nuestra tabla.
  • Nos vamos a la pestaña de Datos > Ordenar.
  • En el cuadro de diálogo que abre elegimos la columna a ordenar, Color de celda y Aceptar.

Imagen del ejemplo en Excel 2007

image

:: Descargar el ejemplo

Crear funciones personalizadas en Excel

October 18, 2010 6 comments

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