Suma por color - Ejemplos de código VBA

Tabla de contenido

La siguiente función calcula el valor total de todas las celdas en un rango particular que son de un color particular:

Desafortunadamente, no existe una función SUMIF para sumar según el color de la celda. Si desea sumar por color, deberá crear una función dentro de VBA.
Para usar este código: Abra el Editor de Visual Basic (Alt + F11), Inserte un nuevo módulo (Insertar> Módulo) y copie y pegue el código deseado en el módulo.

Función para sumar por color

1234567891011121314151617181920 Función Color_By_Numbers (Color_Range como rango, Color_Index como entero) como doble'Atenuar Color_By_Numbers como dobleDim Cell'Mirará las celdas que están en el rango y si'la propiedad de color interior coincide con el color de celda requerido'entonces sumará'Bucle a través del rangoPara cada celda en Color_RangeSi (Cell.Interior.ColorIndex = Color_Index) EntoncesColor_By_Numbers = Color_By_Numbers + Cell.ValueTerminara siSiguiente celdaFunción final

Esto es, en efecto, "suma por color", por lo que si conoce la paleta de 56 colores de Excel y sabe, por ejemplo, que el color 4 es verde claro, entonces la siguiente llamada:

Color_By_Numbers ("A1: P20", 4)

sumará los valores de todas las celdas en el rango A1: P20 que son de color verde claro.

Para facilitar el uso de la función, la siguiente subrutina calculará el valor total para cada uno de los 56 colores de Excel. También da toda la palatina para que sea fácil ver el número de índice de cada color.

La subrutina se invoca en la hoja 1 y mira el rango

12345678910111213141516171819202122 Privado Sub CommandButton1_Click ()'Observará cada color y producirá una tabla resumida de valores'en la hoja 1 en la celda A1 y hacia abajoAtenuar Current_Color_Number como enteroAtenuar Color_Total como doblePara Current_Color_Number = 1 a 56Color_Total = Color_By_Numbers (Hojas ("Hoja2"). Rango ("a11: aa64"), Current_Color_Number)Hojas de trabajo ("Hoja1"). Rango ("A1"). Desplazamiento (Current_Color_Number, 0) = Current_Color_NumberHojas de trabajo ("Hoja1"). Rango ("A1"). Desplazamiento (Current_Color_Number, 0) .Interior.ColorIndex = Current_Color_NumberSi Color_Total 0 # EntoncesHojas de trabajo ("Hoja1"). Rango ("a1"). Desplazamiento (Current_Color_Number, 1) .Value = Color_TotalTerminara siSiguiente Current_Color_NumberEnd Sub

Para descargar el archivo XLS, haga clic aquí

Va a ayudar al desarrollo del sitio, compartir la página con sus amigos

wave wave wave wave wave