Sum efter farve - eksempler på VBA -kode

Indholdsfortegnelse

Følgende funktion beregner den samlede værdi af alle cellerne i et bestemt område, der har en bestemt farve:

Desværre er der ingen SUMIF -funktion at summe baseret på cellefarve. Hvis du vil summere efter farve, skal du oprette en funktion inden for VBA.
For at bruge denne kode: Åbn Visual Basic Editor (Alt + F11), Indsæt et nyt modul (Indsæt> Modul), og kopier og indsæt den ønskede kode i modulet.

Funktion til sum efter farve

1234567891011121314151617181920 Funktion Color_By_Numbers (Color_Range As Range, Color_Index As Integer) Som Double'Dim Color_By_Numbers som dobbeltDim Cell'Vil se på celler, der er i området, og hvis'farveindretningsejendommen matcher den krævede cellefarve'så vil det summeres'Loop Through rækkeviddeFor hver celle i farveområdeHvis (Cell.Interior.ColorIndex = Color_Index) SåColor_By_Numbers = Color_By_Numbers + Cell.ValueAfslut HvisNæste celleAfslut funktion

Dette er i virkeligheden "sum efter farve" - ​​så hvis du kender Excel's 56 farvepalet, og du f.eks. Ved, at farve 4 er lysegrøn, er følgende opkald:

Color_By_Numbers (“A1: P20”, 4)

summerer værdierne for alle cellerne i området A1: P20, der er lysegrønne i farven.

For at gøre det lettere at bruge funktionen beregner følgende underrutine den samlede værdi for hver af excels 56 farver. Det giver også hele palatten, så det er let at se indeksnummeret for hver farve.

Underprogrammet påberåbes på ark 1 og ser på området

12345678910111213141516171819202122 Privat underkommandoButton1_Click ()'Vil se på hver farve og lave en oversigt over værdier'på ark 1 i celle A1 og nedadDim Current_Color_Number som heltalDim Color_Total som dobbeltFor Current_Color_Number = 1 Til 56Color_Total = Color_By_Numbers (Sheets ("Sheet2"). Range ("a11: aa64"), Current_Color_Number)Regneark ("Sheet1"). Område ("A1"). Offset (Current_Color_Number, 0) = Current_Color_NumberRegneark ("Sheet1"). Område ("A1"). Offset (Current_Color_Number, 0) .Interior.ColorIndex = Current_Color_NumberHvis Color_Total 0# SåRegneark ("Sheet1"). Område ("a1"). Offset (Current_Color_Number, 1) .Value = Color_TotalAfslut HvisNæste Current_Color_NumberAfslut Sub

Klik her for at downloade XLS -filen

Du vil bidrage til udviklingen af ​​hjemmesiden, at dele siden med dine venner

wave wave wave wave wave