Pobierz przykładowy skoroszyt
Ten samouczek pokaże Ci, jak liczyć lub sumować komórki o określonym kolorze tła za pomocą VBA.
Rozważ następujący zakres w Excelu.
Nie ma wbudowanej funkcji Excela do zliczania kolorowych komórek. Zamiast tego musimy utworzyć funkcję zdefiniowaną przez użytkownika za pomocą VBA.
Policz komórki - utwórz niestandardową funkcję VBA
Liczenie, ile komórek ma określony kolor za pomocą VBA, jest kwestią utworzenia funkcji zdefiniowanej przez użytkownika (UDF), która przejdzie przez wszystkie komórki w zakresie i określi, czy kolor tła każdej komórki pasuje do koloru tła, który ty testują, a następnie używają tej funkcji w arkuszu programu Excel.
W VBA tworzymy funkcję do zliczania wybranych komórek.
12345678910111213141516 | Funkcja CountCellsByColor(rng As Range, ColorCell As Range) Jako DoubleDim dblCount jako DoubleDim rngCell As Range'Przejdź przez każdą komórkę w zakresieDla każdej komórki rng w rng'sprawdź, czy kolor wnętrza jest tego samego koloru co wybrana komórkaIf rngCell.Interior.Color = ColorCell.Interior.Color ThenIf IsNumeric(rngCell.Value) = True Then'zwiększ liczbę o 1, jeśli kolor jest prawidłowy.dblCount = dblCount + 1Zakończ, jeśliZakończ, jeśliNastępny'Zwróć wartość do ExcelaLiczbaKomórekByKolor = dblLiczbaKoniec funkcji |
Następnie użyj tej funkcji w arkuszu, aby zwrócić wartość.
1 | =LiczKomórkiWgKoloru(B2:E10;G4) |
- Kliknij pomarańczową komórkę w G4 i kliknij Wstaw funkcję.
- Wybierz Określony przez użytkownika jako kategorię, a następnie wybierz Policz komórki według koloru jako funkcja do użycia.
- Kliknij ok.
- Zaznacz zakres zawierający wszystkie kolorowe komórki.
- Wybierz ColorCell, a następnie kliknij ok.
Powtórz proces, aby policzyć komórki z zielonym kolorem tła.
1 | =LiczKomórkiWgKoloru(B2:E10;G5) |
Sum Cells - Utwórz niestandardową funkcję VBA
Tworzymy podobną funkcję niestandardową w VBA, aby zsumować wartości komórek określonego koloru.
12345678910111213141516 | Funkcja SumCellsByColor(rng As Range, ColorCell As Range) As DoubleDim dblSum As DoubleDim rngCell As Range'Przejdź przez każdą komórkę w zakresieDla każdej komórki rng w rng'sprawdź, czy kolor wnętrza jest tego samego koloru co wybrana komórkaIf rngCell.Interior.Color = ColorCell.Interior.Color ThenIf IsNumeric(rngCell.Value) = True Then'dodaj wartość do swojej zmiennej, jeśli kolor jest poprawnydblSum= dblSum + rngCell.WartośćZakończ, jeśliZakończ, jeśliNastępny'Zwróć wartość do ExcelaSumaKomórekWedługKoloru = dblSumaKoniec funkcji |
Następnie ponownie użyjemy tej funkcji w Arkuszu, aby zsumować wymagane komórki.
1 | = SumaKomórekWgKoloru(B2:E10;G7) |