02 Sep Contar celdas de color en Excel con formato condicional (macro)
Contar celdas de color en Excel con formato condicional
¿Cómo podemos contar celdas por color de fondo definido con formato condicional mediante el uso de macros?
La siguiente macro nos permite contar el número de celdas que contienen un color de fondo específico definido mediante reglas de formato condicional. Para ello debemos generar una nueva función mediante la inserción de dos módulos en la ventana de Visual Basic en Excel que veremos a continuación. Esta función consta de dos argumentos principales, el primero define la celda de referencia que debe contener el color de fondo definido por formato condicional que requerimos considerar para la cuenta de celdas equivalentes dentro del rango total, y el segundo argumento define el rango total de celdas que deben ser analizadas.
Las dos instrucciones de la macros que debemos crear cómo módulos dentro de la opción «Visual Basic» del menú programador son las siguientes:
Function CONTARPORCOLORFC(CeldaColor As Range, Rango As Range) As Integer
Dim Celda As Range
Dim Total As Integer
Dim Color As Long
Color = COLORFC(CeldaColor)
For Each Celda In Rango.Cells
If COLORFC(Celda) = Color Then
Total = Total + 1
End If
Next Celda
CONTARPORCOLORFC = Total
End Function
|
———————————————————————
Function COLORFC(Celda As Range) As Long
Dim ReglaActiva As Boolean
For i = 1 To Celda.FormatConditions.Count
With Celda.FormatConditions(i)
If .Type = xlCellValue Then
Select Case .Operator
Case xlBetween: ReglaActiva = Celda.Value >= Evaluate(.Formula1) _
And Celda.Value <= Evaluate(.Formula2)
Case xlNotBetween: ReglaActiva = Celda.Value <= Evaluate(.Formula1) _ Or Celda.Value >= Evaluate(.Formula2)
Case xlEqual: ReglaActiva = Evaluate(.Formula1) = Celda.Value
Case xlNotEqual: ReglaActiva = Evaluate(.Formula1) <> Celda.Value
Case xlGreater: ReglaActiva = Celda.Value > Evaluate(.Formula1)
Case xlLess: ReglaActiva = Celda.Value < Evaluate(.Formula1) Case xlGreaterEqual: ReglaActiva = Celda.Value >= Evaluate(.Formula1)
Case xlLessEqual: ReglaActiva = Celda.Value <= Evaluate(.Formula1)
End Select
ElseIf .Type = xlExpression Then
Application.ScreenUpdating = False
Celda.Select
ReglaActiva = Evaluate(.Formula1)
Range(ActiveCell.Address).Select
Application.ScreenUpdating = True
End If
If ReglaActiva Then
COLORFC = .Interior.Color
Exit Function
End If
End With
Next i
End Function
|
La primer instrucción nos crea la función secundaria COLORFC que nos permite identificar el formato condicional de la celda que será de referencia en el primer argumento de la función principal creada por la segunda instrucción. Esta otra función se denomina CONTARPORCOLORFC y la sintaxis es la siguiente:
|
Donde A1 es una celda dentro del rango total a analizar que contiene el color que requerimos contar definido por formato condicional (puede ser cualquier celda dentro del rango que contenga dicho color y formato), y A1:A20 es el rango total de celdas a analizar.
Te recomiendo ver el siguiente link con más videos de Macros útiles de Excel AQUÍ.
¿No sabés como instalar esta macro? ¡No te preocupes! Aquí está la solución:
TUTORIALSalvo aclaración, todas las fórmulas y macros de este sitio están configuradas para aplicarse sobre la celda A1. Algunas fórmulas se encuentran encerradas entre llaves {} debido a que son fórmulas matriciales. Estas llaves no deben introducirse tecleándolas, sino que se generan automáticamente al aceptar la fórmula pulsando Control+Shift+Enter al mismo tiempo. Las fórmulas de este sitio son compatibles con versiones de Microsoft Excel® 2010 o superiores.
