Contar colores con excel

Mi problema es que no consigo contar los días festivos, vacacionales, de puente y de faltas dentro de un calendario en excel. Tengo diferentes colores para cada cosa y una hoja por cada trabajador anual. Me gustaría poder saber de cada hoja en diferentes celdas el total de cada color.
Creo que es necesario la ayuda de vba y soy un novato.

1 Respuesta

Respuesta
1
Puedes informar que colores vas a utilizar cual es el rango en cada hoja y como se llman las hojas para hacer el código respectivo.
Le estoy enviando el código para que cuente los colores en la hoja activa... me gustaría que me eviaras el nombre de las hojas con los rabgos para enviarte el código completico.
Sub color()
Dim a As Variant
'
For columna = 1 To 5
For fila = 1 To 10
Cells(fila, columna).Select
If Selection.Interior.ColorIndex <> xlColorIndexNone Then
a = a + 1
End If
Next fila
Next columna
range("a12").value="total colores"
Range("c12").Value = a
End Sub
Hola gracias por contestar. Aquí van las aclaraciones que me pides:
-Tengo 25 trabajadores cada uno en una hoja.
- Cada trabajador (una hoja) tiene un calendario de un año:
- Enero rango a1:g7
- febrero j1:p7
- marzo s1:y7
- abril ab1:ah7
- mayo a10:g16
- junio j10:p16
- juliol s10:y16
- agosto ab10:ah16
- setiembre a19:g24
- octubre j19:p24
- noviembre s19:y24
- diciembre ab19:ah24
- todo el anyo a1:ah24
- Son varios los criterios a contar con varios colores:
- Fines de semana (color rojo)
- Días festivos (color verde)
- Vacaciones
- 1/2 día de vacaciones
- Días personales
- 1/2 dia personal
- Baja laboral
Lo que a my me gustaría es que en una hoja resumen agrupada por nombre i criterio sumara los diferentes criterios por meses. (Los colores de los criterios no tienen que ser ninguno en concreto, si puedes facilitarme una paleta de colores de vba me seria muy útil)
ene. feb. mar.
Nombre
Fines semana 3 5
Días festivos 5 1
vacaciones 8 0
1/2 dia va.
Nombre
Fines semana
Días festivos
Vacaciones
1/2 dia va.
Espero que me haya explicado con claridad y que te sirva para poder crear el código.
Un saludo cordial y gracias otra vez por tu tiempo.
Dame tu correo y te envío la paleta de colores
Te estoy enviando el código para el mes de enero... debes crear las macros para febrero... diciembre... y lo demás es llamado de funciones para cada hoja de cada empleado... si me envía el correo le envío en un archivo la paleta de colores
Sub enero()
'esta macro recorre desde la a1: G7 y contabiliza las celdas segun los colores
'definidos en las variables dim y lo coloca en la hoja resumen
Dim verde As Variant
Dim rojo As Variant
Dim azul As Variant
For columnas = 1 To 7
For fila = 1 To 7
Cells(fila, columnas).Select
If Selection.Interior.ColorIndex = 3 Then 'pregunta si es color rojo
rojo = rojo + 1
End If
If Selection.Interior.ColorIndex = 5 Then 'pregunta si es color es azul
azul = azul + 1
End If
If Selection.Interior.ColorIndex = 10 Then 'pregunta si es color verde
verde = verde + 1
End If
Next fila
Next columnas
Sheets("resumen").Select
Range("a1").Value = "enero"
Range("a2").Value = "Festivos"
Range("a3").Value = "vacaciones"
Range("a4").Value = "permisos"
Range("b2").Value = rojo
Range("b3").Value = azul
Range("b4").Value = verde
End Sub
P:D. Al final de todo no olvide calificar
Gracias por tu respuesta.
Por lo que entendido este código lo tengo que introducir en cada hoja del libro de excel, pero lo que no entiendo es en lo que dices "lo demás llamado de funciones", tampoco entiendo donde me contara el mes de enero, febrero, marzo... de cada trabajador que esta en la misma hoja...
el correo es [email protected]
Gracias por tu tiempo
Saludo cordial
Gracias por tu paciencia, siento las molestias.
Si no entiendo mal debo crear el mismo código de enero pero cambiando el numero de columnas i de filas i el nombre para cada mes dentro de cada hoja.(Envío ex. Para revisar) por favor si pudieras explicarme un poco más claro para que yo lo pueda entender:
- ¿Cuándo dices "tienes que hacer las demás macros desde enero a diciembre" donde? ¿Dentro de la misma hoja? ¿Cómo separo una de la otra?
- Cuando dices "como en cada hoja se repiten los mismos meses debes ejecutar una macro principal que vaya cambiando de hoja y vaya llamando las demás funciones" como te habrás dado cuenta no he tocado mucho el vba, no se como se hace este paso.
- En la ayuda de vba al escribir colorindex no me muestra la paleta de colores. Si eres tan amable de enviarla a la dirección de correo "[email protected]" estaré agradecido.
Adjunto ejemplo dos meses de my tabla:
Sub enero()
'esta macro recorre desde la a1: G7 y contabiliza las celdas segun los colores
'definidos en las variables dim y lo coloca en la hoja resumen
Dim verde As Variant
Dim rojo As Variant
Dim azul As Variant
For columnas = 1 To 7
For fila = 1 To 7
Cells(fila, columnas).Select
If Selection.Interior.ColorIndex = 3 Then 'pregunta si es color rojo
rojo = rojo + 1
End If
If Selection.Interior.ColorIndex = 5 Then 'pregunta si es color es azul
azul = azul + 1
End If
If Selection.Interior.ColorIndex = 10 Then 'pregunta si es color verde
verde = verde + 1
End If
Next fila
Next columnas
Sheets("resumen").Select
Range("a1").Value = "enero"
Range("a2").Value = "Festivos"
Range("a3").Value = "vacaciones"
Range("a4").Value = "permisos"
Range("b2").Value = rojo
Range("b3").Value = azul
Range("b4").Value = verde
End Sub
Sub febrero()
'esta macro recorre desde la j1: p7 y contabiliza las celdas segun los colores
'definidos en las variables dim y lo coloca en la hoja resumen
Dim verde As Variant
Dim rojo As Variant
Dim azul As Variant
For columnas = 10 To 16
For fila = 1 To 7
Cells(fila, columnas).Select
If Selection.Interior.ColorIndex = 3 Then 'pregunta si es color rojo
rojo = rojo + 1
End If
If Selection.Interior.ColorIndex = 5 Then 'pregunta si es color es azul
azul = azul + 1
End If
If Selection.Interior.ColorIndex = 10 Then 'pregunta si es color verde
verde = verde + 1
End If
Next fila
Next columnas
Sheets("resumen").Select
Range("b1").Value = "Febrero"
Range("a2").Value = "Festivos"
Range("a3").Value = "vacaciones"
Range("a4").Value = "permisos"
Range("c2").Value = rojo
Range("c3").Value = azul
Range("c4").Value = verde
End Sub
Esto lo he colocado en la "hoja1" que es el año de un trabajador. Si entiendo bien contara los colores y los colocara en la hoja "resumen" con los títulos enero, febrero, marzo... en columnas y festivos, vacaciones, permisos en filas.(Los títulos serán los mismos en cada trabajador solo canbiara las columnas que serán los meses). En la primera linea de código sub enero() "tengo que llenar la parte entre paréntesis con algo?"
De verdad que siento las molestias y agradezco tu esfuerzo para que pueda solucionar este enigma para my.
Un saludo cordial.
Ceo que no sabe programar... lo primero que tiene que hacer es realizar una macro para cada mes.. ya te envíe el de enero... tienes que hacer las demás macros.. desde febrero hasta diciembre... como en cada hoja se repiten los mismos meses. Debe ejecutar una macro principla... que vaya cambiando de hoja y vaya llamando las demás funciones... bueno para ver la paleta de colores.. cuando este en modo macros.. pide ayuda escribiendo Colorindex y el le muestra la gama o paleta de colores.
Pd. No olvide calificar la pregunta
Este código no se coloca en las hojas... dbe hacer lo siguiente. Herramientas macros, dele el nombre... enero... febrero ... y escribes el código que te di... para ver el proceso dbe ejecutar la macro,, diciéndole herramientas macro... ejecutar
Hola, he creado las 12 macros con el código que me has facilitado, en cada hoja he creado una macro general con la ejecución de los 12 códigos, pero tengo un problema y es el siguiente:
Cada vez que ejecuto la macro general de las 12 códigos me coloca el resultado en el mismo sitio de la hoja resumen.
Me gustaría que al ejecutar la macro, el resultado de cada hoja me lo colocara en rangos diferentes de la hoja "resumen".
¿Esto es posible? ¿Y cómo debo hacerlo?
Gracias por tu tiempo.
Un saludo cordial
Tienes que modificar el siguiente código en cada macro.. esta es para enero
Sheets("resumen").Select
Range("a1").Value = "enero"
Range("a2").Value = "Festivos"
Range("a3").Value = "vacaciones"
Range("a4").Value = "permisos"
Range("b2").Value = rojo
Range("b3").Value = azul
Range("b4").Value = verde
Sheets("resumen").Select
Range("c1").Value = "febrero"
Range("c2").Value = rojo
Range("c3").Value = azul
Range("c4").Value = verde
para marzo
Sheets("resumen").Select
Range("d1").Value = "febrero"
Range("d2").Value = rojo
Range("d3").Value = azul
Range("d4").Value = verde
Y así sucesivamente... cuéntame si te funciono
Muchas gracias por tu ayuda y tu paciencia.Me ha sido muy útil. (Espero poder seguir contando con tu ayuda)
Un saludo cordial y hasta pronto.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas