Contar colores con excel

Hola valedor, mi problema es el siguiente: tengo la necesidad de contar los días festivos, vacacionales, faltas de los trabajadores de una empresa. He creado una hoja para cada trabajador con el calendario anual. He asignado un color para cada caso y no se como puedo sumar en cada hoja el total de los diferentes colores del calendario. Soy un poco novato en eso pero creo que necesito ayuda del vba, encontré un código en una revista que cumple con esto pero solo por hoja y en una celda. No se si se puede arreglar o tiene que ser una cosa distinta.
Te adjunto el código:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim celda As Object
Dim contador As Integer
For Each celda In Range("a1:z35")
If celda.Interior.ColorIndex = 5 Then
contador = contador + 1
End If
Next celda
Range("j41").Value = contador
End Sub
Gracias por tu tiempo, espero que puedas enviarme respuesta lo antes posible.
1

1 respuesta

1
Respuesta de
Hola, te recomiendo usar la siguiente función que usas como cualquier otra función de Excel, claro, debes saber copiarla a un modulo de código
Option Explicit
'Con esta funciona, SUMAS el valor de las celdas con el color indicado
Public Function Sumar_Color1(ByVal Rango_Datos As Range, ByVal Color As Integer) As Double
Dim c As Range
Dim Suma As Double
For Each c In Rango_Datos
If c.Interior.ColorIndex = Color Then
Suma = Suma + Val(c.Value)
End If
Next c
Sumar_Color1 = Suma
End Function
'Con esta funcion SUMAS el valor de las celdas de Rango_Datos que sea igual al color de la Color
Public Function Sumar_Color2(ByVal Rango_Datos As Range, ByVal Color As Range) As Double
Dim c As Range
Dim Suma As Double
For Each c In Rango_Datos
If c.Interior.ColorIndex = Color.Interior.ColorIndex Then
Suma = Suma + Val(c.Value)
End If
Next c
Sumar_Color2 = Suma
End Function
'Esta pequeña macro es para que sepas el numero de color de la celda activa
Public Sub QueColor()
MsgBox ActiveCell.Interior.ColorIndex
End Sub
Si no sabes como usar la funcion, lee el siguiente articulo...
http://www.vbalym.netfirms.com/excel/exfun1.html
Saludos
Mauricio
Hola mauricio, gracias por tu ayuda. He aplicado tus funciones y tengo una duda. En la primera funciona bien y la entiendo pero la segunda no funciona o no la entiendo, ¿me puedes indicar que es lo hace?
Un saludo.
Las dos hacen lo mismo, la diferencia esta en el segundo argumento, el color en la primera hay que pasárselo como un entero largo (Long) y en la segundo como la referencia a una celda
Esto te suma en el rango A1:A10 las celdas con el color numero 10
=Suma_Color1(A1:A10,10)
En esta hace lo mismo, pero toma como criterio el color de la celda B1
=Suma_Color1(A1:A10,B1)
Esta segunda es útil para cuando no sabes el numero de color de la celda que te interese, saludos...
Mauricio
Gracias, me ha sido de utilidad. Estoy contento de pertenecer a este foro, gracias a gente como vosotros son las que hacen que esto de excel no sea un problema..
Hasta pronto
Añade un comentario a esta respuesta
Añade tu respuesta
Haz clic para o
Escribe tu mensaje
¿No es la respuesta que estabas buscando? Puedes explorar otras preguntas del tema Microsoft Excel o hacer tu propia pregunta: