Hola a todos:
Hace unos meses publiqué una entrada muy sencilla creando una función para sumar el contenido de un rango según el color de las celdas.
Este es el post: SUMAR DATOS EN UN RANGO SEGÚN EL COLOR DE LA CELDA
Hoy vuelvo con el mismo tema pero usando un nuevo método para obtener el mismo resultado, pero más eficiente y rápido.
En el post inicial usaba una instrucción For – Each para buscar y evaluar las celdas, esto que es perfectamente válido, no es tan eficiente como otras técnicas. Hoy lo vamos a hacer con el método RANGE.FIND, mucho más veloz, pero que no podremos usar como una UDF, sino como un procedimiento Sub.
Este es el código que vamos a usar:
Option Explicit
Sub SUMACOLOR()
'Declaramos variables
Dim Fin As Long, i As Long, acum, iniAddress As String
Dim MiSelect As Object, miColor As Object, RngCelda As Object
Dim ccolor As String
With ActiveSheet
Fin = Application.CountA(.Range("1:1"))
'Iniciamos loop para contar celdas con colores
For i = 6 To Fin + 1
acum = 0
Set MiSelect = selection
Set miColor = .Cells(2, i)
ccolor = miColor.Address
'Buscamos todas las celdas con los colores que hemos indicado y sumamos los valores siempre que celda tenga contenido y el formato indicado
Application.FindFormat.Interior.Color = Range(ccolor).Interior.Color
Set RngCelda = MiSelect.Find("*", after:=MiSelect.Cells(MiSelect.Rows.Count, MiSelect.Columns.Count), searchformat:=True)
If Not RngCelda Is Nothing Then
iniAddress = RngCelda.Address
Do
Set RngCelda = MiSelect.Find("*", after:=RngCelda, searchformat:=True)
acum = acum + IIf(IsNumeric(RngCelda), RngCelda, 0)
Loop Until RngCelda.Address = iniAddress
End If
.Cells(3, i) = acum
Next i
End With
End Sub
Y lo vamos a utilizar con el siguiente ejemplo:
Una vez que ejecutamos la macro:
Obtenemos el sumatorio de las celdas según el color:
Antes de ejecutar debéis seleccionar el rango sobre el que vais a contar según el color.
Y eso es todo, esta clase de programación os la dejo de cortesía, no se suele ver por los foros y redes, y aunque en este caso la aplico a esto, hace años que la uso para otras finalidades.
Descarga el archivo de ejemplo pulsando en: USAR MÉTODO RANGE.FIND PARA SUMAR EL CONTENIDO DE UN RANGO SEGÚN EL COLOR DE LAS CELDAS
¿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
*Excelente, muchas Gracias !* Emiro Erazo