Arkusz na którym będę przeprowadzał ćwiczenia można pobrać tu: arkusz
Ogólna składnia funkcji jest następująca: AGREGUJ(funkcja_nr;opcje;odwołanie1; odwołanie2;...)
gdzie:
funkcja_nr – jest liczbą od 1 do 19, określająca funkcję, która ma zostać użyta,
opcje – czyli wartość liczbowa określająca, sposób zachowania się funkcji,
odwołanie1 – pierwszy argument liczbowy dla funkcji przyjmujących kilka argumentów liczbowych,
odwołanie2 – od 2 do 253 opcjonalnych argumentów liczbowych, dla których ma być agregowana wartość.
Oznaczenie poszczególnych wartości parametru funkcja_nr przedstawiono poniżej:
1 - ŚREDNIA
2 - ILE.LICZB
3 - ILE.NIEPUSTYCH
4 - MAX
5 - MIN
6 - ILOCZYN
7 - ODCH.STANDARD.PRÓBKI
8 - ODCH.STAND.POPUL
9 - SUMA
10 - WARIANCJA.PRÓBKI
11 - WARIANCJA.POP
12 - MEDIANA
13 - WYST.NAJCZĘŚCIEJ.WART
14 - MAX.K
15 - MIN.K
16 - PERCENTYL.PRZEDZ.ZAMK
17 - KWARTYL.PRZEDZ.ZAMK
18 - PERCENTYL.PRZEDZ.OTW
19 - KWARTYL.PRZEDZ.OTW
Natomiast oznaczenie parametru opcje przedstawia się następująco:
0 lub pominięte - Ignoruj zagnieżdżone funkcje SUMY.CZĘŚCIOWE i AGREGUJ
1 - Ignoruj ukryte wiersze oraz zagnieżdżone funkcje SUMY.CZĘŚCIOWE i AGREGUJ
2 - Ignoruj wartości błędów oraz zagnieżdżone funkcje SUMY.CZĘŚCIOWE i AGREGUJ
3 - Ignoruj ukryte wiersze, wartości błędów oraz zagnieżdżone funkcje SUMY.CZĘŚCIOWE i AGREGUJ
4 - Nie ignoruj niczego
5 - Ignoruj ukryte wiersze
6 - Ignoruj wartości błędów
7 - Ignoruj ukryte wiersze i wartości błędów
Wszystkie wartości parametrów będą podawane jako podpowiedź podczas definiowania funkcji.
OK to na tyle wstępu teoretycznego czas przejść do zadania i pokazać funkcję w konkretnym zastosowaniu.
Załóżmy, że prowadzimy księgarnie i w arkuszu mamy prowadzoną ewidencję zamówień np. taką jak poniżej.
Wykonajmy obliczenia ilości wszystkich książek oraz ich wartości. Zadanie wykonamy dwojako: pierwszy sposób - użyjemy tradycyjnej funkcji SUMA oraz drugi sposób - użyjemy funkcji AGREGUJ
W przypadku pierwszego sposobu zostały użyte formuły:
ilość książek - =SUMA(D2:D22)
wartość - =SUMA(F2:F22)
Zaś w przypadku drugiego sposobu:
ilość książek - =AGREGUJ(9;7;D2:D22)
wartość - =AGREGUJ(9;7;F2:F22)
Funkcji SUMA nie trzeba tłumaczyć zatrzymajmy się chwilę przy funkcji AGREGUJ. W formule jako pierwszy parametr (funkcja_nr) została użyta wartość 9 ponieważ odpowiada ona działaniu funkcji SUMA, kolejny parametr 7 (opcje) nakazuje ignorować ukryte wiersze i wartości błędów, zaś zakres (odwołanie1) jest przekazywany do użytej funkcji.
Oba użyte sposoby reprezentują te same wyniki, rodzi się pytanie - Gdzie jest haczyk i w czym oba użyte rozwiązania się różnią? Nie od dziś wiadomo, że diabeł tkwi w szczegółach więc by pokazać różnicę wykonajmy filtrowanie tak by pokazać zamówienia tylko firmy AAA.
Filtrowanie w programie Excel umożliwia nam wyświetlenie wyników spełniających dane kryterium bądź kryteria. W naszym scenariuszu filtr powinien pokazywać tylko zamówienia należące do firmy AAA. Aby zastosować filtr w pierwszej kolejności zaznaczamy nagłówek tabeli i na karcie Narzędzia główne klikamy ikonę „lejka” a następnie Filtruj
Po wybraniu opcji w nagłówku tabeli pojawią się strzałki umożliwiające nam wybranie i zastosowanie danego filtru. Wartości filtru odpowiadają wartością zawartym w danej kolumnie. Po rozwinięciu filtru wybieramy pole odpowiadające firmie AAA
Innym alternatywnym sposobem włączenia filtrowania jest zaznaczenie komórki w której znajduje się informacja co do której będzie stosowane filtrowanie. W naszym przypadku w kolumnie Firma wybieramy tą w której znajduje się nazwa firmy AAA i po kliknięciu PPM z menu kontekstowego odszukujemy Filtruj i następnie Filtruj według wartości wybranej komórki.
Po zastosowaniu filtru pokazującego zamówienia firmy AAA widać już pierwszą różnicę - obliczane wartości nie są takie same. A więc rodzi się kolejne pytanie - Które wartości są prawidłowe? Szybki rzut na obliczenia i dochodzimy do wniosku, że te użyte z wykorzystanie funkcji AGREGUJ. Przykład ten pokazuje jeden z atutów stosowania funkcji AGREGUJ niż SUMA - w przypadku użycia filtrowania nie musimy się martwić o obliczenia gdyż funkcja ta zadba o to aby samemu wykonać odpowiednia przeliczenia w zależności od wyświetlanej zawartości arkusza (użyta opcja numer 7 kazała zignorować ukryte wiersze).
By pokazać kolejny atut stosowania funkcji AGREGUJ zmodyfikujmy lekko nasz przykład i w kolumnie Ilość wpiszmy wartości określające nam stan poszczególnych książek np. przy braku książki w magazynie - słowo: zamówić a przy zakończeniu nakładu - słowo: wyczerpano.
Zastosowanie takiego rozwiązania oczywiście w kolumnie Wartość całość spowoduje wygenerowanie błędu gdyż nie można pomnożyć wartości tekstowej poprzez liczbę – błąd: #ARG To z kolei przełoży się na błąd w sumowanej wartości książek (komórka F25). Ale jak można zauważyć nie dotyczy to funkcji AGREGUJ. Formuła przy której wykorzystano tą funkcję zwraca poprawną wartość sumy wartości wszystkich książek (użyta opcja numer 7 kazała zignorować błędy).
W przypadku obliczenia ilości książek tradycyjna funkcja SUMA sprawdza się gdyż ignoruje ona komórki zawierające tekst.
Myślę, że przedstawione atuty tej funkcji przemawiają same za siebie a użycie tej funkcji w budowaniu formuł może nam zaoszczędzić niepotrzebnych komplikacji jakie mogą wystąpić gdy korzystamy z tradycyjnych funkcji.
W programie Excel istnieje jeszcze jedna funkcja zbliżona działaniem do funkcji AGREGUJ a mianowicie SUMY.CZĘŚCIOWE. Funkcja ta również potrafi ignorować ukryte dane np. podczas włączenia automatycznego filtrowania ale w przypadku ukrycia ręcznego musimy oddzielnie uwzględnić ten przypadek.
Składnia funkcji SUMY.CZĘŚCIOWE jest bardzo podobna do funkcji AGREGUJ lecz brak jest w niej definicji sposobu zachowania się formuły w przypadku wystąpienia błędów a także ofert współpracujących funkcji jest znacznie mniejsza.
Składnia funkcji jest następująca: SUMY.CZĘŚCIOWE(funkcja_nr;odwołanie1; odwołanie2;...)
gdzie:
funkcja_nr – jest liczbą od 1 do 11 lub od 101 do 111, określająca funkcję, która ma zostać użyta z uwzględnieniem wartości ukrytych bądź ich ignorowaniem,
odwołanie1 – pierwszy argument liczbowy dla funkcji przyjmujących kilka argumentów liczbowych,
odwołanie2 – od 2 do 254 opcjonalnych argumentów liczbowych, dla których ma zostać obliczona suma częściowa.
Funkcja_nr (uwzględnianie wartości ukrytych) |
Funkcja_nr (ignorowanie wartości ukrytych) |
Funkcja |
1 | 101 | ŚREDNIA |
2 | 102 | ILE.LICZB |
3 | 103 | ILE.NIEPUSTYCH |
4 | 104 | MAX |
5 | 105 | MIN |
6 | 106 | ILOCZYN |
7 | 107 | ODCH.STANDARDOWE |
8 | 108 | ODCH.STANDARD.POPUL |
9 | 109 | SUMA |
10 | 110 | WARIANCJA |
11 | 111 | WARIANCJA.POPUL |
Tak więc zastosujmy tą funkcję w naszym przykładzie i porównamy uzyskane wyniki z tradycyjną funkcją SUMA oraz funkcją AGREGUJ
Jak widać powyżej w przypadku zastosowania filtrowania automatycznego (zamówienia firmy AAA) wpływ zdefiniowanego ignorowania bądź uwzględnienia wartości ukrytych w funkcji SUMY.CZĘŚCIOWE jest bez znaczenia.
Sprawdźmy jak funkcję zachowają się w przypadku ukrycia ręcznego. Ukrycie wiersza dokonujemy poprzez kliknięcie na jego numer i wybraniu z menu kontekstowego opcji Ukryj.
Aby sprawdzić działanie funkcji ukryjmy wiersze 8 i 9.
Tu już mamy odmienną sytuację gdyż w przypadku zastosowania w formule opcji 9 funkcja SUMY.CZĘŚCIOWE działa tak jak tradycyjna funkcja SUMA - wartości ukryte są uwzględniane. Natomiast zastosowanie opcji 109 powoduje, ignorowanie ukrytych wartości, obliczona wartość jest tożsama z tą obliczoną przy pomocy funkcji AGREGUJ.
Funkcja SUMY.CZĘŚCIOWE tak samo jak funkcja SUMA nie radzi sobie w przypadku wystąpienia błędów.
Podsumowując część obliczeń uda ci się wykonać przy użyciu funkcji SUMY.CZĘŚCIOWE lecz funkcja AGREGUJ jest bardziej elastyczna.
Z funkcją SUMY.CZĘŚCIOWE jest związane jeszcze jedno przydatne narzędzia zawarte na karcie Dane a nazwane (to ci niespodzianka) Suma częściowa. Narzędzie świetnie sprawdza się do wykonania wszelkiego rodzaju podsumowań ale aby narzędzie zadziałało należy w pierwszym kroku wykonać sortowanie według kryterium, którego będziemy te podsumowanie prowadzić.
Przypuśćmy, że chcemy dowiedzieć się o wartości sprzedanych książek ale w rozbiciu o firmy. Tak więc w pierwszej kolejności sortujemy nasz arkusz według firm z którymi prowadzimy współpracę. Aby dokonać sortowanie zaznaczamy wszystkie dane (bardzo ważny krok) i klikamy ikonę „lejka” lecz tym razem z dostępnych opcji wybieramy Sortuj … Do wyboru mamy trzy opcje: myślę, że dwie pierwsze nie wymagają tłumaczenia (Sortuj od A do Z oraz Sortuj od Z do A) natomiast zatrzymajmy się na chwilę przy trzeciej opcji a mianowicie Sortowanie niestandardowe. Wybranie tej opcji pozwoli nam na wykonanie sortowania według kilku kryteriów. Przypuśćmy, że chcemy nasze dane ułożyć w kolejności firm i dodatkowo największej sprzedanej ilości pozycji. Po zaznaczeniu danych i wybraniu Sortowanie niestandardowe w nowo otwartym oknie definiujemy poziomy sortowania. Aby dodać nowy poziom należy wybrać: Dodaj poziom
Efekt wykonanej operacji sortowania przedstawia się następująco, firmy są ułożone w kolejności od A do Z natomiast w obrębie firmy dane dodatkowo są ułożone według malejącej ilości sprzedanych egzemplarzy.
Oczywiście proces ten możemy powtarzać według wielu kryteriów lecz co najważniejsze pamiętaj abyś zawsze zaznaczał wszystkie dane. Może zastanawiasz się - Czemu jest to tak ważne? Gdy nie zaznaczysz wszystkich danych i wykonasz sortowanie według jednej ustalonej kolumny to wiersze zawarte w tej kolumnie ulegną wymieszaniu tj. posortujesz dane zawarte tylko w tej jednej zaznaczonej kolumnie, inne dane umiejscowione w innych kolumnach pozostaną na swoim miejscu. Na szczęście przed wykonaniem tego błędu chroni nas dodatkowy komunikat, który pojawia się w przypadku wykrycia zaznaczenia, które może spowodować zaburzenie spójności naszych danych.
Myślę że najlepiej to przedstawi przykład. Posortujmy nasze zamówienia wg. numeru zamówienia lecz w pierwszym przypadku zaznaczymy sortowanie tylko pierwszej kolumny a w drugim sortowanie wszystkich danych.
Dane oryginalne:
Sortowanie tylko wg. numeru zamówienia
Sortowanie całości
W pierwszym przypadku sortowaniu uległa tylko pierwsza kolumna, reszta danych pozostała bez zmian, sortowanie to zostało przeprowadzone błędnie gdyż w ten sposób straciliśmy integralność wprowadzonych danych tj. numer zamówienia nie odpowiada rzeczywistym zamówieniom.
W drugim zaś przypadku sortowaniu uległy wszystkie dane tj. numer zamówienia zmienił położenie ale również reszta danych też. Dzięki temu integralność danych nie została zaburzona.
Wracamy do naszego przykładu z narzędziem Suma częściowa. Aby uzyskać informację o wartości książek sprzedanych każdej z firm wykonujemy sortowanie według firm a w następnym kroku przechodzimy na kartę Dane i wybieramy Suma częściowa (po uprzednim zaznaczeniu wszystkich danych wraz z nagłówkami). W nowo otwartym oknie w polu Dla każdej zmiany wybieramy Firma, w polu Użyj funkcji definiujemy funkcję jaka ma być użyta natomiast w sekcji Dodaj sumę częściową do zaznaczamy kolumnę do której wybrana funkcja będzie miała zastosowanie.
Poniżej mamy jeszcze do dyspozycji trzy opcje, które możemy dodatkowo zdefiniować:
Zamień bieżące sumy częściowe - zamienia istniejące sumy częściowe na nowo zdefiniowane,
Podział strony pomiędzy grupami - ustawia podział strony na grupy, przydatne gdy chcemy wydrukować utworzone zestawienie dla każdej sekcji danych z osobna. W naszym przypadku na każdym z wydruków znalazłby się dane dotyczące tylko jednej z firm.
Podsumowanie poniżej danych - włącza podsumowanie poniżej każdej z grup.
Po określeniu opcji narzędzia Suma częściowa klikamy na OK.
Jak można zauważyć powyżej dla każdej z firm została obliczona suma wartości wszystkich zamówień z wyjątkiem wartości zamówienia firmy CCC i całkowitego podsumowania wszystkich firm. Stało się tak ponieważ jak już wiesz czytelniku funkcja SUMY.CZĘŚCIOWE nie radzi sobie z błędami.
Nowo utworzone pole (z lewej strony z cyframi 1,2 oraz 3) służy do „zawinięcia” danych.
Spróbujmy błąd wyeliminować i zaobserwować zmiany.
Jak można zauważyć po zmianie w komórce D18 gdzie znikło słowo „zamówić” a pojawiła się wartość liczbowa obliczenia są wykonane poprawnie za to ciekawe spostrzeżenia możemy dokonać poniżej. Jak widać funkcja SUMA nie radzi sobie z utworzonymi sumami częściowymi ponieważ są one wliczone do ogólnej wartości zamówień co prowadzi do błędnych obliczeń - zamiast prawidłowego wyniku jakim jest wartość 73380 zł funkcja pokazuje nam wynik 11608zł (stało się tak ponieważ wartości obliczone poprzez narzędzie Suma częściowa zostały wstawione wewnątrz zakresu zdefiniowanego w funkcji SUMA).
Funkcja AGREGUJ również nie poradziła sobie z wyliczeniem poprawnej wartości ale jest to błąd spowodowany nieprawidłowym zdefiniowaniem opcji ignorowania - opcja 7 nakazuje zignorować ukryte wiersze i wartości błędów a nie zagnieżdżone funkcje SUMY.CZĘŚCIOWE Aby wynik był prawidłowy wystarczy opcję zmienić np. na 3 (ignorowane będzie wszystko)
Dwie pozostałe ręcznie zdefiniowane funkcje SUMY.CZĘŚCIOWE pokazują poprawne wyniki ponieważ funkcja ta domyślnie ignoruje inne funkcje SUMY.CZĘSCIOWE
Jeżeli w naszym arkuszu będziemy chcieli korzystać z komórek, które zawierają tekst będziemy musieli niestety utworzone definicje formuł zawierających funkcję SUMY.CZĘŚCIOWE ręcznie zmodyfikować.
Jakbyś Czytelniku znał jakiś inny sposób poza ręczną modyfikacją formuł zawartych w komórkach to Ja bardzo chętnie go poznam.
Na koniec chciałbym jeszcze przedstawić dwie funkcje, które na pewno wzbogacą arkusz w kontekście tworzenia zestawień. Dlatego też w naszym arkuszu wprowadzę jeszcze jedną kolumnę a mianowicie pole Data.
Naszym zadaniem będzie utworzenie takiej formuły, która wyliczy nam wartość zamówienia obejmująca dany okres. Przyjmijmy, że interesuje nas wartość zamówień za miesiąc luty 2015. Zadanie to zrealizujemy za pomocą podanie wiersza w której znajduje się data początkowa (w przykładzie wiersz 5 – data: 2015-02-04) interesującego nas okresu oraz podanie drugiego numeru wiersza tym razem z datą końcową (w przykładzie wiersz 11 – data: 2015-03-28)
Aby wykonać zadanie będziemy musieli skorzystać z dwóch nowych funkcji a mianowicie funkcji ADRES oraz funkcji ADR.POŚR
Zadaniem pierwszej funkcji ADRES jest utworzenie tekstu będącego adresem komórki o określonych przez nas współrzędnych. Składnia funkcji prezentuje się następująco: ADRES(nr_wiersza;nr_kolumny ;typ_adresu;A1;tekst_arkusz)
gdzie poszczególne parametry oznaczają:
nr_wiersza - wymagany, wartość liczbowa określająca numer wiersza, który ma zostać użyty w odwołaniu do komórki,
nr_kolumny - wymagany, wartość liczbowa określająca numer kolumny, który ma zostać użyty w odwołaniu do komórki,
typ_adresu – opcjonalny, wartość liczbowa określająca, jakiego typu odwołanie będzie zwracane przez funkcję. Zwracany typ odwołania
1 - lub pominięte Bezwzględne (bezwzględne odwołanie do komórki: W formule jest to dokładny adres komórki, niezależny od położenia komórki, która zawiera formułę. Bezwzględne odwołanie do komórki ma postać $A$1.)
2 Bezwzględne wiersza, względne kolumny np. A$1
3 Względne wiersza, bezwzględne kolumny np. $A1
4 Względne np. A1
A1 - opcjonalny, wartość logiczna określająca styl odwołań A1 lub W1K1.
tekst_arkusz – opcjonalny, wartość tekstowa określająca nazwę arkusza używanego jako odwołanie zewnętrzne. Na przykład formuła =ADRES(1;1;;;"Arkusz2") zwraca wartość Arkusz2!$A$1. Jeśli argument tekst_arkusz jest pominięty, nazwa arkusza nie jest używana, a adres zwracany przez funkcję odwołuje się do komórki w bieżącym arkuszu.
To przykład ilustrujący działanie funkcji ADRES
Druga z funkcji ADR.POŚR jest funkcją, która jest używana do zamiany argumentu tekstowego opisującego odwołanie do obszaru na normalne odwołanie do zakresu komórek.
Składnia funkcji ADR.POŚR jest następująca: ADR.POŚR(adres_tekst; A1)
gdzie parametry oznaczają:
adres_tekst - wymagany, odwołanie do komórki zawierającej odwołanie w trybie adresowania A1 lub W1K1 albo nazwę zdefiniowaną jako odwołanie bądź odwołanie do komórki jako ciągu tekstowego.
A1 – opcjonalny, wartość logiczna określająca, jaki typ odwołania znajduje się w komórce adres_tekst.
Tak więc mały przykład.
W komórkach od D4 do D11 mamy wpisane wartości, natomiast w komórce G4 oraz G5 będziemy wpisywali zakres komórek, który będzie sumowany. Wpisane adresy komórek są wpisanym tekstem. Za pomocą funkcji ADR.POŚR tekst ten zamienimy na normalne odwołanie i połączymy je z funkcją SUMA.
Formuła, która pozwoli nam na zsumowanie zdefiniowanego zakresu przyjmie postać: =SUMA(ADR.POŚR(G4):(ADR.POŚR(G5))) Działanie formuły sprowadza się do pobrania zawartości komórek G4 oraz G5 i przy pomocy funkcji ADR.POŚR zamienienie ich na odwołanie. Odwołanie przyjmuje postać zakresu od D5 do D9 Zakres ten jest argumentem funkcji SUMA czego efektem jest dodanie do siebie wszystkich wartości zawartych w komórkach od D5 do D9.
Uzbrojeni w wiedzę o sposobie działania funkcji ADRES oraz ADR.POŚR wracamy do naszego przykładu.
Formuła, która pozwoli nam na wyliczenie wartości zamówień w zależności od podania wiersza daty początkowej i wiersza daty końcowej przyjmie postać: =AGREGUJ(9;3;ADR.POŚR(ADRES(J4;7)):ADR.POŚR(ADRES(J5;7)))
- funkcja ADRES pobiera nam z komórek J4 oraz J5 numery wierszy, natomiast numer kolumny jest zdefiniowany na 7 ponieważ potrzebujemy dodać do siebie wartości zamówień, pobrane adresy są tekstem,
- funkcja ADR.POŚR zamienia adresy tekstowe na normalne odwołania,
- utworzony zakres stanowi argument funkcji AGREGUJ, nakazujący zsumowanie wartości znajdujących się w zakresie (opcja 9) z ignorowaniem ukrytych wierszy, wartości błędów oraz zagnieżdżonych funkcji SUMY.CZĘŚCIOWE i AGREGUJ
Nasz cel został osiągnięty, można by zadać pytanie – Czy nie da się tego zrobić prościej? Ten sam efekt otrzymamy przy użyciu funkcji: =SUMA(ADR.POŚR("G"&J4&":G"&J5))
Jak można zauważyć w formule tej nie użyliśmy funkcji ADRES lecz by otrzymać zakres został użyty operator konkatenacji łączący adres kolumny z adresem wiersza wprowadzonym w komórkach J4 oraz J5.
I tu pozwól czytelniku, że przykład tej formuły będzie wstępem do kolejnego wpisu w którym omówię sposoby łączenia ze sobą danych z różnych komórek.
Bibliografia:
https://support.office.com/pl-pl/article/AGREGUJ-funkcja-c8caed56-07df-4aeb-9741-23693ffbe525
https://support.office.com/pl-pl/article/ADRES-funkcja-47657e92-81ae-47f8-87cd-62d4f30c774d
Komentarze
Kilka kolumn grupowane za pomocą sum częściowych jednak np:
1 kolumna to suma częściowa (9- suma)
2 kolumna to średnia częściowa (1-średnia)
3 kolumna to suma częściowa (9-suma)
itd..
Jak policzyć ilość występujących "*słów*" ze wskazanego zakresu kolumny z danego ciągu / dowolnej ilości arkuszy (arkusze oznaczane datą).
------------------
pikolo:
=LICZ.JEŻELI(Arkusz1!D9:D19;"*"&F8&"*")+LICZ.JEŻELI(Arkusz2!D9:D19;"*"&F8&"*")
Funkcja w Arkusz1 i Arkusz2 w zakresie od D9 do D19 znajduje ilość wystąpienia słowa wpisanego do komórki F8
dzięki (:-))))))))