Sumowanie warunkowe według koloru

Autor: Piotr Dynia
Na pewno nieraz zdarzyło się korzystać z funkcji SUMA.JEŻELI, która sumuje dane z jednej kolumny na podstawie odpowiadających im wartości w innej kolumnie (kryteriów). Czasami jednak kryteria nie są określone wartościami, ale kolorami. Takiego obliczenia funkcja SUMA.JEŻELI nie wykona.
Proponujemy zatem przygotowanie własnej funkcji w języku VBA. Przykładowe dane do podsumowania przedstawia rysunek 1.
Rysunek 1. Niektórzy klienci zostali oznaczeni żółtym kolorem
Aby przygotować odpowiednią funkcję:
 
  1. Otwórzmy Edytor VBA, wciskając kombinację klawiszy [Alt]+[F11].
  2. Z menu Insert wybierzmy polecenie Module.
  3. Wpiszmy następujący kod:
Function SumaKolorow(ByVal r As Range)
Dim j As Range
Dim k As Double
For Each j In r
If j.Offset(0, -1).Interior.ColorIndex = 6 Then k = k + j.Value
Next j
SumaKolorow = k
End Function
 
  1. Zapiszmy i zamknijmy Edytor VBA.
  1. Zaznaczmy komórkę B12 i wprowadźmy następującą formułę:
=SumaKolorow(B2:B11)
Mamy gotowy wynik.
Rysunek 3. Suma kwot, które odnoszą się do klientów oznaczonych kolorem
Jeżeli komórki oznaczone kolorem (kryteria) są oddalone od kwot o dwie kolumny w lewą stronę, wpiszmy -2 w drugim argumencie funkcji Offset. Jeśli leżałyby po prawej stronie, użyjmy dodatniej liczby określającej przesunięcie.
Funkcja uwzględnia jedynie komórki, których kolor tła jest żółty. Jeżeli użyto innego, zmieńmy liczbę określającą kolor przy właściwości Interior.ColorIndex. Przykładowo: liczba 1 to numer koloru czarnego, 2 – białego, 3 – czerwonego, 4 – zielonego, 5 – niebieskiego, 7 – różowego, 8 – błękitnego, a 9 – brązowego.


Piotr Dynia

Zaloguj się, aby dodać komentarz

Nie masz konta? Zarejestruj się »

Zobacz także

Skuteczne narzędzia do wykrywania uszkodzonych podzespołów

pobierz

Wykrywanie i usuwanie niechcianych programów

pobierz

Polecane artykuły

Array ( [docId] => 49961 )

Array ( [docId] => 49961 )
Array ( [docId] => 49961 )