Contar celdas por el color

Me gustaría saber cómo puedo hacer una fórmula para que cuente el número de celdas de un determminado color (pe rojo) dentro de un rango. Esto lo quiero para poder contar los días de vacaciones de la plantilla identificados en un calendario de excel hecho por mí. Ya sabes, así me evito contar los días que se toma cada persona.

1 Respuesta

Respuesta
1
Digamos en principio que no existe una función standard de MS Excel que haga lo que pretendes.
Sin embargo se puede ejecutar una macro cómo la que te indico a continuación, para que cuente las celdas en color de un rango seleccionado y lo deje en una celda.
Primero, "pinta" una celda (D1 en mi macro) del msmo color que quieres contar en tu rango.
Activa el editor de Visual Basic (presiona Alt+F11), inserta un nuvo módulo ("Insertar", "´Modulo") y pega el siguiente código:
Sub ctaxcol()
Dim vCountCol As Integer
Dim vCellTarg As String
'Ferreiro, cambia esta direccion de celda si la tuya es distinta:
vCellTarg = "D1"
'=================
vCountCol = 0
For Each cell In Selection
If ActiveCell.Interior.ColorIndex = ActiveSheet.Range(vCellTarg).Interior.ColorIndex Then
vCountCol = vCountCol + 1
End If
ActiveCell.Offset(1, 0).Select
Next cell
ActiveSheet.Range(vCellTarg).FormulaR1C1 = vCountCol
End Sub
----
Cierra el editor y graba el archivo.
Para que funcione selecciona un rango de celdas a contar y ejecuta la macro que acabas de pegar(ctaxcol).
Esta contará las celdas cuyo color coincida con el de la celda D1 y dejará en ella el resultado. (Como dice dentro del mismo macro) puedes cambiar allí la referencia a otra celda si así lo deseas).
Inténtalo y comentame. Lo probé y funciona bien.
Un abrazo.
Fernando
Lo que me has mandado funciona en columnas pero no lo consigo hacer funcionar en filas. Si me dejas una dirección te puedo mandar el fichero para que le eches un vistazo.
Muchas gracias por tu interés, de verdad..
Si necesitas una respuesta rápida a tu problema reemplaza el código anterior por el siguiente. La única diferencia será la línea de instrucción de desplazamiento:
Sub ctaxcolF()
Dim vCountCol As Integer
Dim vCellTarg As String
'Ferreiro, cambia esta direccion de celda si la tuya es distinta:
vCellTarg = "D1"
'=================
vCountCol = 0
For Each cell In Selection
If ActiveCell.Interior.ColorIndex = ActiveSheet.Range(vCellTarg).Interior.ColorIndex Then
vCountCol = vCountCol + 1
End If
ActiveCell.Offset(0, 1).Select
Next cell
ActiveSheet.Range(vCellTarg).FormulaR1C1 = vCountCol
End Sub
-----
Si comparas ambos verás que sólo modifiqué esta linea:
ActiveCell.Offset(1, 0).Select
quedando ahora:
ActiveCell.Offset(0, 1).Select
Que indica que permanezca en la misma fila, pero que se mueva a la celda de la columna siguiente a la derecha.
Esto debería resolver el problema, pero si aún quieres enviar el archivo, mi dirección es [email protected]
Un abrazo!
Fernando

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas