Jak zmusić Excel do liczenia komórek po ich kolorach?

liczenie komórek z kolorami

Cześć,

Dziś będzie o kolorach w VBA. Pokażę Ci przykład, w którym Excel sprawdza kolor zaznaczonej komórki i porównuje go z kolorami innych komórek, w celu sprawdzenia ile z nich ma ten sam kolor. Na koniec liczba znalezionych komórek zostanie wpisana do aktywnej komórki, której kolor jest wyszukiwany.

Zaczynam od wstawienia serii danych od 1 do 10 w kolumnie A, oraz wypełnieniu ich 3 kolorami: żółtym, czerwonym i zielonym. Teraz w kolumnie D wypełniam tymi kolorami 3 komórki jedna pod drugą.

Przechodzę do edytora VBA i rozpoczynam pisanie procedury. Na początku muszę zadeklarować zmienne, których użyję w tym przykładzie. Zmienna i, oraz k posłużą do przechodzenia po kolejnych wierszach w kolumnie D, oraz A. Zmienna j będzie liczyć znalezione komórki w kolumnie A, a ostatnia zmienna kolor przechowywać będzie wartość barwy wypełnienia.

deklaracja zmiennych

Zmienna kolor musi być typu Double, ponieważ wartość koloru w VBA przechowywana jest w postaci liczby, często bardzo wysokiej, a Integer tego nie udźwignie. Zaczynam od zaznaczenia komórki D1 jako pierwszej, w której VBA sprawdzi kolor i porówna go z kolorami komórek w kolumnie A.

Pierwsza pętla For… Next, będzie przechodzić pomiędzy komórkami kolumny D. W tej pętli umieszczam kolejną, która posłuży do przechodzenia pomiędzy komórkami w kolumnie A. Po otwarciu obu pętli procedura sprawdza kolor aktywnej komórki i przypisuje jego wartość zmiennej kolor.

otwarcie pętli i sprawdzenie koloru

Teraz sprawdzam funkcją If, czy kolor aktywnej komórki jest taki sam jak kolor pierwszej komórki w kolumnie A. Jeśli tak, to zmienna j zwiększa swoją wartość o 1 (na początku zmienna przyjmuje wartość 0), a jeśli nie, to nic się nie dzieje i wykonywana jest kolejna pętla, aż do komórki A10.

porównanie kolorów

Po ostatnim przejściu pętli dla zmiennej i w aktywnej komórce pojawia się wartość zmiennej j, następnie kod przechodzi do komórki niżej i zeruje wartość zmiennej j, aby w kolejnej pętli komórki były liczone od nowa. Uruchamia się kolejne przejście pętli For dla zmiennej k.

wstawienie wartości i przejście do nowej komórki

W kolejnym przykładzie pokażę Ci jak przerobić ten kod, aby zamiast liczenia komórek o tym samym kolorze, wstawiał ich wartości do aktywnej komórki.

procedura licząca komórki o tym samym kolorze

Jeśli wolisz instrukcję w postaci filmu to zapraszam do oglądania poniżej.

Spodobał Ci się artykuł ? Udostępnij go znajomym.

Share on facebook
Share on linkedin
Share on twitter

2 thoughts on “Jak zmusić Excel do liczenia komórek po ich kolorach?”

  1. Jak policzyć ilość komórek wyróżnionych 1 kolorem w wierszu, a nie kolumnie?
    Nie znam VBA i korzystam z kopiowania przykładów.

    1. Dariusz Skórniewski

      Cześć,
      Polecenie Cells(i,1).Interior.Color oznacza kolor komórki w pierwszej kolumnie i wierszu zgodnym z wartością zmiennej i. Gdybyś zamiast tego wykorzystał zapis Cells(1,i) to sytuacja byłaby taka, że odwołanie będzie do 1 wiersza, a kolumny zależnej od wartości zmiennej i.

Leave a Comment

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *