Soma por cor - Exemplos de código VBA

A função a seguir calcula o valor total de todas as células em um intervalo específico que são de uma cor específica:

Infelizmente, não há função SUMIF para somar com base na cor da célula. Se quiser somar por cor, você precisará criar uma função dentro do VBA.
Para usar este código: Abra o Editor do Visual Basic (Alt + F11), insira um novo módulo (Inserir> Módulo) e copie e cole o código desejado no módulo.

Função para somar por cor

1234567891011121314151617181920 Função Color_By_Numbers (Color_Range As Range, Color_Index As Integer) As Double'Dim Color_By_Numbers como DoubleDim Cell'Vai olhar para as células que estão no intervalo e se'a propriedade color interior corresponde à cor da célula necessária'então vai somar'Loop Through rangePara cada célula em Color_RangeIf (Cell.Interior.ColorIndex = Color_Index) ThenColor_By_Numbers = Color_By_Numbers + Cell.ValueFim sePróxima CélulaFunção Final

Isso está em vigor "soma por cor" - então, se você conhece a paleta de cores de 56 do Excel e sabe, por exemplo, que a cor 4 é verde claro, então a seguinte chamada:

Color_By_Numbers (“A1: P20”, 4)

somará os valores de todas as células no intervalo A1: P20 que são de cor verde claro.

Para tornar o uso da função mais fácil, a seguinte sub-rotina calculará o valor total para cada uma das 56 cores do Excel. Também fornece toda a palata, de modo que é fácil ver o número de índice de cada cor.

A sub-rotina é chamada na folha 1 e olha para o intervalo

12345678910111213141516171819202122 Private Sub CommandButton1_Click ()'Olhará para cada cor e produzirá uma tabela de resumo de valores'na folha 1 na célula A1 e para baixoDim Current_Color_Number As IntegerDim Color_Total As DoublePara Current_Color_Number = 1 a 56Color_Total = Color_By_Numbers (Sheets ("Sheet2"). Range ("a11: aa64"), Current_Color_Number)Folhas de trabalho ("Folha1"). Intervalo ("A1"). Offset (Current_Color_Number, 0) = Current_Color_NumberPlanilhas ("Folha1"). Intervalo ("A1"). Offset (Current_Color_Number, 0) .Interior.ColorIndex = Current_Color_NumberSe Color_Total 0 # ThenPlanilhas ("Folha1"). Intervalo ("a1"). Deslocamento (Current_Color_Number, 1) .Value = Color_TotalFim sePróximo Current_Color_NumberEnd Sub

Para baixar o arquivo XLS, clique aqui

wave wave wave wave wave