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.
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.
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.
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.
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.
Jeśli wolisz instrukcję w postaci filmu to zapraszam do oglądania poniżej.
2 thoughts on “Jak zmusić Excel do liczenia komórek po ich kolorach?”
Jak policzyć ilość komórek wyróżnionych 1 kolorem w wierszu, a nie kolumnie?
Nie znam VBA i korzystam z kopiowania przykładów.
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.