Download eksemplet på projektmappe
Denne vejledning viser dig, hvordan du tæller eller summerer celler i en bestemt baggrundsfarve ved hjælp af VBA.
Overvej følgende område i Excel.
Der er ingen indbygget Excel -funktion til at tælle farvede celler. I stedet skal vi oprette en brugerdefineret funktion ved hjælp af VBA.
Tæl celler - Opret en tilpasset VBA -funktion
At tælle, hvor mange celler der er i en bestemt farve ved hjælp af VBA, er et spørgsmål om at oprette en brugerdefineret funktion (UDF), der vil gå gennem alle cellerne i området og afgøre, om baggrundsfarven på hver celle matcher den baggrundsfarve, du tester efter og derefter bruger den funktion i Excel -regnearket.
I VBA opretter vi en funktion til at tælle udvalgte celler.
12345678910111213141516 | Funktion CountCellsByColor (rng As Range, ColorCell As Range) Som DoubleDim dblTæll som dobbeltDim rngCell som rækkevidde'Sløjfe gennem hver celle i områdetFor hver rngCell I rng'tjek for at se, om den indvendige farve er den samme farve som den celle, du har valgtHvis rngCell.Interior.Color = ColorCell.Interior.Color SåIf IsNumeric (rngCell.Value) = True Then'øg antallet med 1, hvis farven er korrekt.dblCount = dblCount + 1Afslut HvisAfslut HvisNæste'Returner værdien til ExcelCountCellsByColor = dblCountAfslut funktion |
Brug derefter denne funktion i regnearket til at returnere værdien.
1 | = CountCellsByColor (B2: E10, G4) |
- Klik i den orange celle i G4, og klik på Indsæt funktion.
- Vælg Brugerdefineret som kategori, og vælg derefter CountCellsByColor som funktion at bruge.
- Klik på Okay.
- Fremhæv området, der indeholder alle de farvede celler.
- Vælg ColorCell, og klik derefter på Okay.
Gentag processen for at tælle cellerne med en grøn baggrundsfarve.
1 | = CountCellsByColor (B2: E10, G5) |
Sumceller - Opret en brugerdefineret VBA -funktion
Vi opretter en lignende brugerdefineret funktion i VBA for at summere værdierne af cellerne i en bestemt farve.
12345678910111213141516 | Funktion SumCellsByColor (rng As Range, ColorCell As Range) Som DoubleDim dblSum som dobbeltDim rngCell som rækkevidde'Sløjfe gennem hver celle i områdetFor hver rngCell I rng'tjek for at se, om den indvendige farve er den samme farve som den celle, du har valgtHvis rngCell.Interior.Color = ColorCell.Interior.Color SåIf IsNumeric (rngCell.Value) = True Then'tilføj værdien til din variabel, hvis farven er korrektdblSum = dblSum + rngCell.ValueAfslut HvisAfslut HvisNæste'Returner værdien til ExcelSumCellsByColor = dblSumAfslut funktion |
Vi ville så igen bruge denne funktion i regnearket til at opsummere de nødvendige celler.
1 | = SumCellsByColor (B2: E10, G7) |