Last ned eksemplet på arbeidsbok
Denne opplæringen vil vise deg hvordan du teller eller summerer celler i en bestemt bakgrunnsfarge ved hjelp av VBA.
Vurder følgende område i Excel.
Det er ingen innebygd Excel -funksjon for å telle fargede celler. I stedet må vi opprette en brukerdefinert funksjon ved hjelp av VBA.
Telle celler - Lag en tilpasset VBA -funksjon
Å telle hvor mange celler som har en bestemt farge ved hjelp av VBA, handler om å lage en brukerdefinert funksjon (UDF) som vil gå gjennom alle cellene i området, og avgjøre om bakgrunnsfargen til hver celle samsvarer med bakgrunnsfargen du tester for og deretter bruker den funksjonen i Excel -regnearket.
I VBA lager vi en funksjon for å telle utvalgte celler.
12345678910111213141516 | Funksjon CountCellsByColor (rng As Range, ColorCell As Range) Som DoubleDim dblCount as DoubleDim rngCell As Range'Sløyfe gjennom hver celle i områdetFor hver rngCell In rng'sjekk for å se om den indre fargen er den samme fargen som cellen du har valgtHvis rngCell.Interior.Color = ColorCell.Interior.Color DaIf IsNumeric (rngCell.Value) = True Then'øke antallet med 1 hvis fargen er riktig.dblCount = dblCount + 1Slutt omSlutt omNeste'Returner verdien til ExcelCountCellsByColor = dblCountSluttfunksjon |
Bruk deretter denne funksjonen i regnearket for å returnere verdien.
1 | = CountCellsByColor (B2: E10, G4) |
- Klikk i den oransje cellen i G4, og klikk på Sett inn funksjon.
- Plukke ut Brukerdefinert som kategorien, og velg deretter CountCellsByColor som funksjonen å bruke.
- Klikk OK.
- Marker området som inneholder alle de fargede cellene.
- Velg ColorCell, og klikk deretter OK.
Gjenta prosessen for å telle cellene med en grønn bakgrunnsfarge.
1 | = CountCellsByColor (B2: E10, G5) |
Sumceller - Lag en tilpasset VBA -funksjon
Vi lager en lignende egendefinert funksjon i VBA for å summere verdiene til cellene i en bestemt farge.
12345678910111213141516 | Funksjon SumCellsByColor (rng As Range, ColorCell As Range) Som DoubleDim dblSum As DoubleDim rngCell As Range'Sløyfe gjennom hver celle i områdetFor hver rngCell In rng'sjekk om den indre fargen er den samme fargen som cellen du har valgtHvis rngCell.Interior.Color = ColorCell.Interior.Color DaIf IsNumeric (rngCell.Value) = True Then'legg til verdien i variabelen hvis fargen er riktigdblSum = dblSum + rngCell.ValueSlutt omSlutt omNeste'Returner verdien til ExcelSumCellsByColor = dblSumSluttfunksjon |
Vi vil deretter igjen bruke denne funksjonen i regnearket for å oppsummere de nødvendige cellene.
1 | = SumCellsByColor (B2: E10, G7) |