6 febrero, 2025

SUMAR DATOS EN UN RANGO SEGÚN EL COLOR DE LA CELDA

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:

SUMAR DATOS EN UN RANGO SEGUN EL COLOR DE LA CELDA

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:

SUMAR DATOS EN UN RANGO SEGUN EL COLOR DE LA CELDA_1

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.

Donate Button with Credit Cards

¡¡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

Comparte este post

12 comentarios en «SUMAR DATOS EN UN RANGO SEGÚN EL COLOR DE LA CELDA»

  1. 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.

    1. 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.

  2. 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,

  3. 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.

  4. 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

    1. 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

  5. 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.

  6. 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.

Si te ha gustado o tienes alguna duda, puedes dejar aquí tu comentario.

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies