Ladda ner exempelarbetsboken
Denna handledning visar dig hur du räknar eller summerar celler i en viss bakgrundsfärg med VBA.
Tänk på följande intervall i Excel.
Det finns ingen inbyggd Excel -funktion för att räkna färgade celler. Istället måste vi skapa en användardefinierad funktion med VBA.
Räkna celler - Skapa en anpassad VBA -funktion
Att räkna hur många celler som har en viss färg med VBA handlar om att skapa en användardefinierad funktion (UDF) som går igenom alla celler i intervallet och avgör om bakgrundsfärgen för varje cell matchar den bakgrundsfärg som du testar för och sedan använder den funktionen i Excel -kalkylbladet.
I VBA skapar vi en funktion för att räkna utvalda celler.
12345678910111213141516 | Funktion CountCellsByColor (rng As Range, ColorCell As Range) Som DoubleDim dblRäkna som dubbelDim rngCell As Range'Loop genom varje cell i intervalletFör varje rngCell In rng'kontrollera om den inre färgen är samma färg som cellen du har valtOm rngCell.Interior.Color = ColorCell.Interior.Color DåIf IsNumeric (rngCell.Value) = True Then'öka antalet med 1 om färgen är korrekt.dblCount = dblCount + 1Avsluta omAvsluta omNästa'Returnera värdet till ExcelCountCellsByColor = dblCountAvsluta funktion |
Använd sedan den här funktionen i kalkylbladet för att returnera värdet.
1 | = CountCellsByColor (B2: E10, G4) |
- Klicka i den orange cellen i G4 och klicka på Infoga funktion.
- Välj Användardefinierad som kategori och välj sedan CountCellsByColor som funktion att använda.
- Klick OK.
- Markera intervallet som innehåller alla färgade celler.
- Välj ColorCelloch klicka sedan på OK.
Upprepa processen för att räkna cellerna med en grön bakgrundsfärg.
1 | = CountCellsByColor (B2: E10, G5) |
Summa celler - Skapa en anpassad VBA -funktion
Vi skapar en liknande anpassad funktion i VBA för att summera värdena för cellerna i en viss färg.
12345678910111213141516 | Funktion SumCellsByColor (rng As Range, ColorCell As Range) Som DoubleDim dblSum As DoubleDim rngCell As Range'Loop genom varje cell i intervalletFör varje rngCell In rng'kontrollera om den inre färgen är samma färg som cellen du har valtOm rngCell.Interior.Color = ColorCell.Interior.Color DåIf IsNumeric (rngCell.Value) = True Then'lägg till värdet i din variabel om färgen är korrektdblSum = dblSum + rngCell.ValueAvsluta omAvsluta omNästa'Returnera värdet till ExcelSumCellsByColor = dblSumAvsluta funktion |
Vi skulle då återigen använda den här funktionen i kalkylbladet för att summera de nödvändiga cellerna.
1 | = SumCellsByColor (B2: E10, G7) |