Sumowanie warunkowe według koloru

Autor: Piotr Dynia
Data: 31-03-2015 r.

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

Jak zatrzeć ślady po przeglądaniu Internetu?

pobierz

Wzór Polityki Bezpieczeństwa w ochronie danych osobowych

pobierz

Konfiguracja bezpieczeństwa. Windows 10

pobierz

10 sprytnych trików na szybkie obliczenia w Excelu

pobierz

Polecane artykuły

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