5 marzo, 2021

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

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

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