Sum etter farge - eksempler på VBA -kode

Følgende funksjon beregner den totale verdien av alle cellene i et bestemt område som har en bestemt farge:

Dessverre er det ingen SUMIF -funksjon å summere basert på cellefarge. Hvis du vil summere etter farge, må du opprette en funksjon i VBA.
For å bruke denne koden: Åpne Visual Basic Editor (Alt + F11), Sett inn en ny modul (Sett inn> Modul) og kopier og lim inn ønsket kode i modulen.

Funksjon som summeres etter farge

1234567891011121314151617181920 Funksjon Color_By_Numbers (Color_Range As Range, Color_Index As Integer) Som Double'Dim Color_By_Numbers As DoubleDim Cell'Vil se på celler som er i området og hvis'fargen innvendig egenskap samsvarer med cellefargen som kreves'så vil det oppsummere'Loop Through -rekkeviddeFor hver celle i fargeområdeHvis (Cell.Interior.ColorIndex = Color_Index) SåColor_By_Numbers = Color_By_Numbers + Cell.ValueSlutt omNeste celleSluttfunksjon

Dette er i virkeligheten "sum etter farge" - så hvis du kjenner Excel 56 -fargepalett og du for eksempel vet at farge 4 er lysegrønn, er følgende samtale:

Color_By_Numbers (“A1: P20”, 4)

vil summere verdiene for alle cellene i området A1: P20 som er lysegrønne i fargen.

For å gjøre det enklere å bruke funksjonen, vil følgende underprogram beregne den totale verdien for hver av excels 56 farger. Det gir også hele palaten slik at det er lett å se indeksnummeret for hver farge.

Subrutinen påkalles på ark 1 og ser på området

12345678910111213141516171819202122 Private Sub CommandButton1_Click ()'Skal se på hver farge og lage en oversiktlig verditabell'på ark 1 i celle A1 og nedoverDim Current_Color_Number som heltallDim Color_Total As DoubleFor Current_Color_Number = 1 Til 56Color_Total = Color_By_Numbers (Sheets ("Sheet2"). Range ("a11: aa64"), Current_Color_Number)Regneark ("Ark1"). Område ("A1"). Forskyvning (Current_Color_Number, 0) = Current_Color_NumberRegneark ("Ark1"). Område ("A1"). Forskyvning (Current_Color_Number, 0) .Interior.ColorIndex = Current_Color_NumberHvis Color_Total 0# DaRegneark ("Ark1"). Område ("a1"). Forskyvning (Current_Color_Number, 1) .Value = Color_TotalSlutt omNeste Current_Color_NumberSlutt Sub

For å laste ned XLS -filen, klikk her

Du vil bidra til utvikling av området, dele siden med vennene dine

wave wave wave wave wave