8 de noviembre de 2008

Función con un RANGO como parámetro

En el siguiente ejemplo muestra como pasar un rango de celdas como parámetro de nuestra función.

Nuestra función recibirá un rango de celdas como parámetro y devolverá la media del rango seleccionado.




Para ello crearemos un módulo de VBA, tal y como se indica en el apartado Crear un función personalizada (UDF). Una vez creado el módulo, añadiremos el siguiente código:

Public Function MediaRango(Rango As Range) As Double
Dim intRowsInRange As Integer
Dim intColsInRange As Integer
Dim intRow As Integer
Dim intCol As Integer
Dim intItems As Integer

' Obtenemos el número de filas y columnas del rango seleccionado
MediaRango = 0
intintems = 0
intRowsInRange = Rango.Rows.Count
intColsInRange = Rango.Columns.Count

' Recorremos las filas del rango
For intRow = 1 To intRowsInRange

' Recorremos las columnas del rango
For intCol = 1 To intColsInRange

MediaRango = MediaRango + Rango.Cells(intRow, intCol).Value
intItems = intItems + 1

Next intCol

Next intRow

' Calculamos la media del rango
MediaRango = MediaRango / intItems

End Function


Ahora ya sólo nos queda salvar la función y usarla desde nuestra hoja Excel. Para ello bastará con llamarla desde cualquier celda de nuestra hoja indicándole el rango de celdas del cuál deseamos calcular la media.

= MediaRango(B1:B3)

Una vez invocada la función nos aparecerá la media del rango seleccionado.


No hay comentarios: