Bogdan Gilarski

Bogdan Gilarski www.excelperfect.pl
Perfect And
Practical

Temat: TRIK co oznacza zapis =--(A1:A10>5)

Czasami możemy spotkać się z zapisem dwóch występujących bezpośrednio po sobie minusów, na przykład jak w tytule tematu.
Załóżmy, że w komórkach od A1 do A10 mamy jakieś liczby.
Powiedzmy, że chcemy zliczyć ilość tych komórek, których wartość jest > 5. Wpisałem sobie liczby od 1 do 10.
Oczywiście można standardowo poprzez
=LICZ.JEŻELI(A1:A10;">5")
ale można też tablicowo (Ctrl + Shift + Enter) zapytać poprzez
=A1:A10>5
Otrzymamy wtedy tablicę wyników, na przykład takich
{FAŁSZ\FAŁSZ\FAŁSZ\FAŁSZ\FAŁSZ\PRAWDA\PRAWDA\PRAWDA\PRAWDA\PRAWDA}
Czyli tablicę wartości logicznych.
Nałożenie na tą tablicę funkcji SUMA
=SUMA(A1:A10>5)
niestety zwróci nam wartość zero, gdyż "co prawda" PRAWDA = 1, a FAŁSZ = 0, ale nie zawsze tak łatwo Excel sobie z tym radzi.:), to znaczy nie każdym sposobem możemy taką tablicę wartości logicznych zamienić na wartość matematyczną.
W tym przypadku Excel "powinien" dokonać konwersji wartości logicznych PRAWDA i FAŁSZ na jeden lub zero i dopiero je podsumować.
Jest kilka ze sposobów aby takiej konwersji dokonać. Przykłady (zatwierdzamy tablicowo)
=SUMA((A1:A10>5)*1)
czyli przemnażamy każdy element tablicy przez 1
=SUMA((A1:A10>5)+0)
czyli dodajemy do każdego elementu tablicy zero
=SUMA(--(A1:A10>5))
czyli przemnażamy tablicę samą przez siebie, lub jak ktoś woli, dwa razy mnożymy przez minus jeden. Ponieważ minus razy minus daje plus, wynik jest OK, otrzymamy sumę z wartości liczbowych
{0\0\0\0\0\1\1\1\1\1}
, czyli 5.
Jest to odpowiednik formuły
=SUMA((A1:A10>5)*(A1:A10>5))

Jeżeli wpiszemy
=SUMA(-+(A1:A10>5))
otrzymamy wynik ze zmienionym znakiem. Tak naprawdę wystarczy tylko minus, plus jest zbędny.

Należy zwrócić uwagę, że najpierw musimy dodać, przemnożyć ...tablice zawierające wartości logiczne, co spowoduje, że poprzez działanie matematyczne dokona się konwersja na tablicę zawierającą wartości matematyczne i dopiero taki wynik działania ująć jako argumant funkcji SUMA().
Czyli na przykład zapis
=SUMA(A1:A10>5)*1
zwróci wynik inny niż zamierzony.
Nie działa natomiast zapis
=SUMA(++(A1:A10>5))
:)Bogdan Gilarski edytował(a) ten post dnia 11.09.09 o godzinie 11:03