Hola a todos:
Estos están siendo los últimos post antes de irme de vacaciones, así que aprovecho cualquier momento para escribir y publicar : )
Bien, hoy vamos a responder a una consulta que realizaba un lector hace unos días:
Buenas: Se pueden sumar celdas que contengan el mismo color de celda (coloreado manualmente)?
Saludos
Pues respondiendo a la consulta, claro que es posible, y podemos hacerlo con una UDF (una función creada por nosotros mismos).
Veamos el siguiente ejemplo:
y ahora lo que deseamos obtener es la suma del acumulado de cada color. Para ello, utilizaremos la siguiente función:
Function SUMACOLOR(ByVal rango As Range, miColor As Range)
'Declaramos variables
Dim Celda As Variant, cColor As String, nColor As Variant
Dim nRango As String, dato As Variant
'Detectamos código del color elegido
cColor = miColor.Address
nColor = Range(cColor).Interior.Color
'En el rango seleccionado sumamos el color que previamente hemos elegido
For Each Celda In rango
nRango = Celda.Address
If Range(nRango).Interior.Color = nColor And IsNumeric(Celda) Then dato = dato + Celda
Next Celda
'pasamos el valor a la función
SUMACOLOR = dato
End Function
El resultado es el siguiente:
Como podéis observar, el primer parámetro es el rango sobre el que se desea obtener la suma y el segundo es la celda que contiene el color elegido para sumar.
La macro está programada para sumar solo números de forma que si en una celda con color, aparece un caracter no numérico, no lo tendrá en cuenta.
Y eso es todo! Ha resultado un función muy sencilla y muy útil!!, espero que os sirva!
* Importante: Este código no funciona con formato condicional
Descarga el archivo de ejemplo pulsando en: SUMAR DATOS EN UN RANGO SEGÚN EL COLOR DE LA CELDA
¿Te ha resultado de interés?, puedes apoyar a Excel Signum con una pequeña donación.
¡¡Muchas gracias!!
Mediante la suscripción al blog, la realización comentarios o el uso del formulario de contacto estás dando tu consentimiento expreso al tratamiento de los datos personales proporcionados según lo dispuesto en la ley vigente (LOPD). Tienes más información al respecto en esta página del blog: Política de Privacidad y Cookies
Genial! Llevaba tiempo buscando algo sencillo y efectivo. Muchas gracias!
Muchas gracias Miri!, saludos
hola que tal, se podrá realizar un resultado dependiendo del color de la celda? ejm: si la celda es de color rojo que de como resultado jesus, si es azul que de carlos, es posible?, lo necesito urgente T_T
muchas gracias de antemano.
Una forma sería así:
Function SUMACOLOR(ByVal target As Range)
‘Declaramos variables
Dim Celda As Variant, cColor As String, nColor As Variant
Dim nRango As String, dato As Variant
For Each Celda In target
nRango = Celda.Address
If Range(nRango).Interior.Color = vbRed Then dato = «jesus»
If Range(nRango).Interior.Color = vbBlue Then dato = «carlos»
Next Celda
‘pasamos el valor a la función
SUMACOLOR = dato
End Function
Saludos.
Hola, muchas gracias por tu aporte, es justo lo que estaba buscando, pero no me acaba de funcionar de manera automatica, me explico:
Cuando modifico manualmente el color de una celda, la formula no se recalcula de forma automatica, hasta que no edito la celda donde esta la formula y sin hacer nada le doy al enter (p.ej.) no se recalcula el valor.
En cambio, si en lugar de cambiar manualmente el color de la celda, lo que hago es copiar el formato de una celda que ya tiene el color que quiero que me sume, entonces si que se recalcula el valor de manera automatica.
¿Estoy haciendo algo mal?
Gracias,
Hola David:
Se trata de una UDF y tiene ciertas limitaciones, los datos se actualizan cuando se edita la celda oi en el momento de ejecutar el la fórmula.
Si lo que necesitas es que se actualice cada vez que, por ejemplo se ejecuta el proceso, se activa la página, etc, debes pasar la función a un procedimiento sub y vincularla a un evento.
Saludos.
Buenos días
Si yo utilizo esta formula y va perfecta, pero puedo añadir por ejemplo ahora tengo que contar celdas de color banco y el texto sólo de color negro.?
Y al reves contar celdas de color blanco con texto negro
Por ejemplo así:
Function SUMACOLOR(ByVal rango As Range, miColor As Range)
'Declaramos variables
Dim Celda As Variant, cColor As String, nColor As Variant
Dim nRango As String, dato As Variant
'Detectamos código del color elegido
cColor = miColor.Address
nColor = Range(cColor).Interior.Color
cColorF = miColor.Address
nColorF = Range(cColor).Font.Color
'En el rango seleccionado sumamos el color que previamente hemos elegido
For Each Celda In rango
nRango = Celda.Address
If Range(nRango).Interior.Color = nColor And Range(nRango).Font.Color = nColorF And IsNumeric(Celda) Then dato = dato + Celda
Next Celda
'pasamos el valor a la función
SUMACOLOR = dato
End Function
UNA LASTIMA QUE AL AGREGARLE COLOR A OTRAS CELDAS NO CAMBIE EL VALOR TOTAL,….RESULTA POCO SEGURO ESTAR ACTUALIZANDO LA FORMULA CADA VEZ QUE MODIFICAMOS EL COLOR DE LAS CELDAS. GRACIAS DE TODOS MODOS.
La formula se actualizará si se cambia el color en el rango de la función. Saludos.
buenos días Segu, soy Jaume, y mi pregunta es: si es posible en EXCEL poner color a las celdas de los valores de una suma. Me explico: En una celda hay una operación, por ejemplo la suma de 230 celdas, esta la otra, la suma de varias de seguidas, etc, una y otra vez, y en vez de colorear manualmente todas las celdas que dan ese resultado, que de alguna forma se le pudiera decir que quiero ese o este color a todas las celdas que intervienen en el resultado de esa operación.