USAR MÉTODO RANGE.FIND PARA SUMAR EL CONTENIDO DE UN RANGO SEGÚN EL COLOR DE LAS CELDAS

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:

USAR MÉTODO RANGE.FIND PARA SUMAR EL CONTENIDO DE UN RANGO SEGÚN EL COLOR DE LAS CELDAS

Una vez que ejecutamos la macro:

Obtenemos el sumatorio de las celdas según el color:

USAR MÉTODO RANGE.FIND PARA SUMAR EL CONTENIDO DE UN RANGO SEGÚN EL COLOR DE LAS CELDAS_1

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.

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

Un pensamiento en “USAR MÉTODO RANGE.FIND PARA SUMAR EL CONTENIDO DE UN RANGO SEGÚN EL COLOR DE LAS CELDAS

¿Te ha gustado?, Realiza un comentario.

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios .