jueves, 13 de octubre de 2016

VBA: Contar Ceros en Rangos Discontinuos de Excel

En la entrada anterior del blog vimos el uso matricial de algunas funciones para conseguir contar el número de ceros (una condición dada cualquiera) sobre un rango de celdas discontinuos.

En el post de hoy veremos como conseguir ese conteo empleando una función personalizada con VBA para Excel.

En un módulo estándar de nuestro proyecto de VB insertamos la siguiente UDF:

Function CuentaCeros(rng As Range) As Long
Dim celda As Range, rgArea As Range

'iniciamos el contador de ceros
contador = 0

'recorremos cada área dada en el argumento de nuestra UDF
For Each rgArea In rng.Areas
    'recorremos cada celda de cada área
    For Each celda In rgArea
        'probamos la condición
        'si es Cero
        If celda = 0 Then     'And IsEmpty(celda) = False And Not (HasFormula(celda))
            contador = contador + 1
        End If
    Next celda
Next rgArea

'devolvemos el dato a la función
CuentaCeros = contador
End Function 



ASí, para nuestro ejemplo, en una celda añadiremos:
=CuentaCeros((A2:C2;E2:G2;I2:P2))

OJO!!, es muy importante añadir el doble paréntesis; pues es la manera de indicar que estamos trabajando con un conjunto de áreas
(de igual manera que lo haríamos con la función INDICE con su segunda sintaxis, por ejemplo)

VBA: Contar Ceros en Rangos Discontinuos de Excel

No hay comentarios:

Publicar un comentario en la entrada