Summe nach Farbe - VBA-Codebeispiele

Die folgende Funktion berechnet den Gesamtwert aller Zellen in einem bestimmten Bereich, die eine bestimmte Farbe haben:

Leider gibt es keine SUMIF-Funktion, um basierend auf der Zellenfarbe zu summieren. Wenn Sie nach Farbe summieren möchten, müssen Sie eine Funktion in VBA erstellen.
Um diesen Code zu verwenden: Öffnen Sie den Visual Basic Editor (Alt + F11), fügen Sie ein neues Modul ein (Einfügen > Modul) und kopieren Sie den gewünschten Code und fügen Sie ihn in das Modul ein.

Funktion zum Summieren nach Farbe

1234567891011121314151617181920 Funktion Color_By_Numbers(Color_Range als Bereich, Color_Index als Integer) als Double' Color_By_Numbers als Double dimmenZelle dimmen'Werde Zellen anschauen, die sich im Bereich befinden und wenn'die Eigenschaft color interior entspricht der erforderlichen Zellenfarbe'dann summiert es sich'Loop-Through-BereichFür jede Zelle in Color_RangeWenn (Cell.Interior.ColorIndex = Color_Index) ThenColor_By_Numbers = Color_By_Numbers + Cell.ValueEnde WennNächste ZelleEndfunktion

Dies ist in der Tat "Summe nach Farbe" - wenn Sie also die 56-Farbpalette von Excel kennen und beispielsweise wissen, dass Farbe 4 hellgrün ist, dann der folgende Aufruf:

Color_By_Numbers(“A1:P20”,4)

summiert die Werte für alle hellgrünen Zellen im Bereich A1:P20.

Um die Verwendung der Funktion zu vereinfachen, berechnet das folgende Unterprogramm den Gesamtwert für jede der 56 Excel-Farben. Es gibt auch die gesamte Palette, so dass die Indexnummer für jede Farbe leicht zu erkennen ist.

Das Unterprogramm wird auf Blatt 1 aufgerufen und betrachtet den Bereich

12345678910111213141516171819202122 Private Sub CommandButton1_Click()'Wird jede Farbe betrachten und eine zusammenfassende Wertetabelle erstellen'auf Blatt 1 in Zelle A1 und abwärtsDim Current_Color_Number als IntegerDim Color_Total als DoubleFür Current_Color_Number = 1 bis 56Color_Total = Color_By_Numbers(Sheets("Sheet2").Range("a11:aa64"), Current_Color_Number)Worksheets("Sheet1").Range("A1").Offset(Current_Color_Number, 0) = Current_Color_NumberWorksheets("Sheet1").Range("A1").Offset(Current_Color_Number, 0).Interior.ColorIndex = Current_Color_NumberWenn Color_Total 0# ThenWorksheets("Sheet1").Range("a1").Offset(Current_Color_Number, 1).Value = Color_TotalEnde WennNächste Current_Color_NumberEnd Sub

Um die XLS-Datei herunterzuladen, klicken Sie bitte hier

Sie werden die Entwicklung der Website helfen, die Seite mit Ihren Freunden teilen

wave wave wave wave wave