Summa efter färg - Exempel på VBA -kod

Innehållsförteckning

Följande funktion beräknar det totala värdet av alla celler i ett visst område som har en viss färg:

Tyvärr finns det ingen SUMIF -funktion att summera baserat på cellfärg. Om du vill summera efter färg måste du skapa en funktion inom VBA.
För att använda denna kod: Öppna Visual Basic Editor (Alt + F11), Infoga en ny modul (Infoga> Modul) och kopiera och klistra in önskad kod i modulen.

Funktion att summera efter färg

1234567891011121314151617181920 Funktion Color_By_Numbers (Color_Range As Range, Color_Index As Integer) Som Double'Dim Color_By_Numbers As DoubleDim Cell'Kommer att titta på celler som är i intervallet och om'färgen inre egenskap matchar cellfärgen som krävs'då summerar det'Loop Through -räckviddFör varje cell i färgområdeOm (Cell.Interior.ColorIndex = Color_Index) SedanColor_By_Numbers = Color_By_Numbers + Cell.ValueAvsluta omNästa cellAvsluta funktion

Detta är i själva verket "summa efter färg" - så om du känner till Excel 56 färgpalett och du till exempel vet att färg 4 är ljusgrön är följande samtal:

Color_By_Numbers (“A1: P20”, 4)

summerar värdena för alla celler i intervallet A1: P20 som är ljusgröna.

För att göra det enklare att använda funktionen kommer följande underprogram att räkna ut det totala värdet för var och en av excels 56 färger. Det ger också hela palatten så att det är lätt att se indexnumret för varje färg.

Subrutinen aktiveras på blad 1 och tittar på intervallet

12345678910111213141516171819202122 Privat underkommandoButton1_Click ()'Kommer titta på varje färg och ta fram en sammanfattning av värdetabeller'på blad 1 i cell A1 och nedåtDim Current_Color_Number som heltalDim Color_Total As DoubleFör Current_Color_Number = 1 till 56Color_Total = Color_By_Numbers (Sheets ("Sheet2"). Range ("a11: aa64"), Current_Color_Number)Arbetsblad ("Sheet1"). Område ("A1"). Offset (Current_Color_Number, 0) = Current_Color_NumberArbetsblad ("Sheet1"). Område ("A1"). Offset (Current_Color_Number, 0) .Interior.ColorIndex = Current_Color_NumberOm Color_Total 0# DåArbetsblad ("Sheet1"). Område ("a1"). Offset (Current_Color_Number, 1) .Value = Color_TotalAvsluta omNästa Current_Color_NumberAvsluta Sub

Klicka här för att ladda ner XLS -filen

Du kommer att bidra till utvecklingen av webbplatsen, dela sidan med dina vänner

wave wave wave wave wave