Co to jest formuła tablicowa

Transkrypt

Co to jest formuła tablicowa
1
Co to jest formuła tablicowa?
Formuły tablicowe (ang. CSE - formulas) zostały zaimplementowane w celu przyśpieszenia
budowy obszernych arkuszy operujących na dużych tablicach. Formuły tablicowe (CSE), z
punktu widzenia na rodzaj generowanych wyników, dzielimy na formuły wielokomórkowe i
jednokomórkowe. Funkcje tablicowe wielokomórkowe zwracają wynik w formie tablicy
(jedno bądź dwuwymiarowej), który jest umieszczany w zakresie komórek, natomiast
formuły tablicowe jednokomórkowe zwracają jednoelementowy wynik.
Argumenty funkcji tablicowych (CSE) są takie same co w przypadku zwykłych formuł, lecz
w zależności od naszych oczekiwań od formuły tablicowej argumenty mogą być różnie
wpisywane. Natomiast wspólną cechą formuł tablicowych jest to, że są one ujmowanie w
nawiasy klamrowe {=....} oraz są zawsze zatwierdzane kombinacją klawiszy Ctrl-Shift-Enter
- z tego powodu często są nazywane formułami CSE.
Formuły tablicowe (CSE) mają jeszcze jedną bardzo przydatną cechę, która wynika z ich
istoty. Mianowicie, z uwagi na fakt, że formułę wpisujemy tylko jeden raz, a obowiązuje ona
w całym zakresie (tablicy), to arkusz kalkulacyjny Ms Excel uniemożliwia, blokuje zmianę, w
tym usunięcie formuły z części, fragmentu zakresu. Operacje modyfikacji formuły bądź też
jej usunięcia muszą dotyczyć całego zakresu tablicy, do której była wpisana ta formuła
tablicowa, czyli przed dokonaniem zmian należy ponownie wybrać pełny zakres, w którym
była zastosowana formuła tablicowa.
Formuły tablicowe zastępują operacje kopiowania formuł źródłowych na cały zakres
docelowy tych formuł źródłowych. Poza tym mają również mechanizmy iteracyjne, dzięki
którym możliwe jest przetwarzanie wiersz po wierszu albo kolumna po kolumnie krokowo
bez konieczności pisania procedur w VBA lub wprowadzania do arkusza komórek
pomocniczych - przechowujących wyniki cząstkowe, pośrednie.
Formuły tablicowe - przykład 1 - tablica liczb
pseudolosowych
Przygodę z formułami tablicowymi (CSE) rozpoczniemy od bardzo prostego przykładu. Otóż
nasz problem polega na wygenerowaniu 300 liczb pseudolosowych, które mają być wpisane
do komórek w zakresie A1:J30. Formuła generująca liczbę pseudolosową jest bardzo prosta:
=los(). Oczywiście możemy wpisać tę formułę do komórki A1, następnie skopiować ją do
schowka (np. Ctrl-c), wybrać zakres A1:J30 po czym wkleić formułę ze schowka (np. Ctrl-v).
W rezultacie otrzymamy 300 liczb pseudolosowych, czyli rozwiążemy nasz problem, ale czy
efektywnie? Arkusz będzie zawierał 300 identycznych formuł i po zapisaniu zeszytu na dysku
będzie zajmował sporo miejsca, bo każda formuła musi być zapisana. Poza tym istnieje
ryzyko polegające na tym, że użytkownik nadpisze którąś formułę stałą wartością liczbową i
w takim przypadku w tej komórce już nie będzie losowana liczba pseudolosowa w chwili
przeliczania całego arkusza.
Aby prawidłowo utworzyć tablicę liczb pseudolosowych należy posłużyć się formułami
tablicowymi, bo właśnie po to zostały stworzone. Zaznaczamy zakres A1:J30, wpisujemy
formułę: =los() i zatwierdzamy ją kombinacją klawiszy Ctrl-Shift-Enter. Ms Excel wypełni
cały wybrany zakres formułą postaci: {=los()}, tzn. dokładnie rzecz biorąc formuła jest
2
wpisana tylko raz, ale obowiązuje dla wszystkich komórek w wybranym zakresie. Można o
tym przekonać się w bardzo prosty sposób, mianowicie wystarczy spróbować usunąć
zawartość dowolnej komórki - Excel wyświetli stosowny komunikat informujący, że takiej
operacji wykonać nie można na części tablicy.
Formuły tablicowe - przykład 2 - stałe tablicowe
Korzystając z arkusza kalkulacyjnego często posługujemy się stałymi, mogą to być zarówno
liczby jak również i teksty. Są to te elementy, które nie są wynikiem działania formuł. Jak
logika podpowiada, stałe również mogą tworzyć tablice jednowymiarowe (wektory pionowe,
poziome) albo dwuwymiarowe (macierze).
Aby utworzyć wektor poziomy, czyli poziomą jednowymiarową tablicę należy jej elementy
rodzielić znakiem średnika, np.: ={"Miasto"; "Ulica"; "Nr domu"}. Nawiasy klamrowe służą
do przekazania arkuszowi, że jest to tablica. Zaznaczamy zakres A1:C1, wpisujemy powyższą
formułę i zatwierdzamy ją kombinacją klawiszy Ctrl-Shift-Enter. Excel wpisze poszczególne
elementy stałej tablicy do kolejnych komórek.
Jeśli do zakresu A2:C2 wpiszemy formułę: ={"Wrocław"; "Teatralna"; "53"},
do zakresu A3:C3 wpiszemy formułę: ={"Wrocław"; "Plac Solny"; "8"},
a do zakresu A4:C4 wpiszemy formułę: ={"Wrocław"; "Rynek"; "17"}, to uzyskamy tablicę
adresów. Na tej tablicy możemy wykonywać operacje sortowania, możemy odwoływać się do
poszczególnych komórek (elementów adresu) w innych formułach, lecz Excel nie pozwoli na
usunięcie bądź edycję jednej komórki tablicy. Każdy adres, czyli wiersz tablicy adresów jest
traktowany jako całość i jeśli zaistnieje potrzeba usunięcia bądź modyfikacji adresu, to należy
zaznaczyć wszystkie trzy komórki w wierszu tablicy i dopiero wówczas można usunąć ten
wiersz albo poddać go edycji.
Jest to bardzo dobre zabezpieczenie utrzymania spójności danych w tablicy.
Aby utworzyć wektor pionowy należy zastosować jako separator elementów takiego wektora
znaku: "\" (ang. backslash). Dla przykładu, jeśli zaznaczymy zakres E2:E4, a następnie
wpiszemy formułę: ={"Jan Kowalski"\ "Adam Nowak"\ "January Adamski"}.
3
Można oczywiście połączyć obie metody wpisywania i w ten sposób wprowadzimy macierz.
Zaznacz zakres G2:H4 i wprowadź następującą formułę tablicową:
={"Jan"; "Kowalski"\ "Adam"; "Nowak"\ "January"; "Adamski"}.
Kolejny przykład ilustruje wprowadzenie macierzy liczbowej. Zaznacz zakres J1:L3 i wpisz
następującą formułę tablicową: ={1; 2; 3\ 4; 5; 6\ 7; 8; 9}.
UWAGA: Arkusz kalkulacyjny Ms Excel 2010 ma błąd polegający na błędnym
interpretowaniu znaków separatorów wierszowych i kolumnownych stałych tablicowych.
Błąd powstał w wyniku polonizacji arkusza kalkulacyjnego. W wersji anglojęzycznej
znakiem separatora kolumnowego jest "," (przecinek) a znakiem separatora wierszowego ";"
(średnik), podczas gdy w wersji polskojęzycznej separtorem kolumnowym powinien być ";"
(średnik), a separatorem wierszowym "\" (backslash). W trakcie tworzenia polskiej lokalizacji
Excela wyłącznie zamieniono znak separatora kolumnowego z "," (przecinka) na "\"
(backslash) - powodując dokładnie odwrotne znaczenie separatorów w stosunku do
poprzednich wersji Excela i co gorsza - dokumentacji. Zgłosiłem błąd do Microsoft'u, dostał
numer: 1138917260 oraz otrzymał klasę: Istotność C (minimalny wpływ na firmę) co oznacza
w praktyce usunięcie błędu dopiero w najbliższym Service Packu.
Formuły tablicowe - przykład 3 - działania w formułach
tablicowych
Formuły tablicowe oczywiście umożliwiają również przeprowadzanie obliczeń, czy ogólnie
rzecz ujmując działań. Dla przykładu posłużymy się operacją mnożenia. Poniższe przykłady
wykażą, że ta sama formuła będzie generowała różne wyniki w zależności od położenia
komórki w tablicy. Występuje tutaj zjawisko nieco podobne do trybów adresowania
(względny, mieszany, bezwzględny), ale mechanizm i zasada działania są zupełnie odmienne.
Do obliczeń użyjemy dwóch wektorów ([1, 2, 3] i [4, 5, 6]). Wykonamy operację mnożenia
obu wektorów, ale w rozumieniu formuł tablicowych a nie w rozumieniu algebry liniowej.
Wykonamy cztery mnożenia zmieniając postać wektorów (pion/poziom).
Ilustracja operacji mnożenia dwóch tablic jednowymiarowych (wektorów):
4
Omówię jeden przypadek, znajdujący się w zakresie E2:G4, w którym znajduje się formuła
tablicowa postaci: {={1\2\3}*{4;5;6}}. Oznacza to, że pierwszy wektor jest pionowy a drugi
poziomy. Excel wyznaczając poszczególne wartości komórek znajdujących się w zakresie
tablicy (wybranego zakresu) określa położenie każdej komórki względem początkowej
komórki zakresu, znajdującej się w lewym-górnym rogu zakresu tablicy.
Komórka E2 znajduje się w pierwszym wierszu i pierwszej kolumnie zakresu funkcji
tablicowej. Zatem, aby wyznaczyć jej wartość należy wziąć element z pierwszego wiersza
wektora pionowego (1) i element z pierwszej kolumny wektora poziomego (4), a następnie
wymnożyć te wartości: 1 * 4 = 4.
Komórka E3 znajduje się w drugim wierszu i pierwszej kolumnie zakresu funkcji tablicowej.
Zatem, aby wyznaczyć jej wartość należy wziąć element z drugiego wiersza wektora
pionowego (2) i element z pierszej kolumny wektora poziomego (4), a następnie wymnożyć
te wartości: 2 * 4 = 8.
Komórka F4 znajduje się w trzecim wierszu i drugiej kolumnie zakresu funkcji tablicowej.
Zatem, aby wyznaczyć jej wartość należy wziąć element z trzeciego wiersza wektora
pionowego (3) i element z drugiej kolumny wektora poziomego (5), a następnie wymnożyć te
wartości: 3 * 5 = 15.
Stosując tę zasadę można w łatwy sposób wyznaczyć zawartość pozostałych komórek dla
wszystkich przykładów.
Formuły tablicowe - przykład 4 - tabliczka mnożenia
Prostym, praktycznym przykładem zastosowania formuł tablicowych jest wygenerowanie
tabliczki mnożenia. Ze swej istoty tabliczka mnożenia jest prostokątną tabelą zawierającą
iloczyny wartości elementów znajdujących się z boczku i w główce tabeli. W naszym
przykładzie utworzymy klasyczną tabliczkę mnożenia do "100", czyli 10 x 10.
Jeśli w zakresach A4:A13 oraz B3:K3 wpiszemy kolejne liczby naturalne od 1 do 10, to
wartości iloczynów powinny znaleźć się w zakresie B4:K13. Tworząc tabliczkę mnożenia z
wykorzystaniem formuł klasycznych należy wpisać formułę do komórki B4: =$A4*B$3, a
następnie przekopiować na pozostałe 99 komórek. Skutek jest taki, że arkusz będzie zawierał
100 formuł wykorzystujących adresowanie mieszane (kolumnowe i wierszowe). Jest to
podejście dalece nieefektywne i nieprofesjonalne.
5
Prawidłowym sposobem utworzenia tabliczki mnożenia jest wykorzystanie tylko jednej
formuły tablicowej. W tym celu należy zaznaczyć cały obszar tabliczki mnożenia, czyli
obszar, w którym mają pojawić się iloczyny i wpisać jedną formułę tablicową:
=A4:A13*B3:K3, a następnie zatwierdzić ją wciskając jednocześnie Control, Shift i Enter. Po
zatwierdzeniu we wszystkich komórkach wybranego zakresu pojawi się wpis:
{=A4:A13*B3:K3}. Dzięki temu będziemy mieli jedną formułę obowiązującą w całym
zakresie, czyli w stu komórkach.
Arkusz kalkulacyjny Ms Excel wyznaczając wartości poszczególnych komórek tablicy będzie
określał ich indeksy (offsety) pionowe i poziome. Dzięki temu będzie pobierał odpowiednie
elementy z wektora pionowego wpisanego do zakresu A4:A13 oraz poziomego B3:K3 po
czym wyznaczał wartość ich iloczynu.
Ponieważ wartości w boczku i główce tabliczki mnożenia są wyrażeniami stałymi, to
wykorzystując formuły tablicowe możemy zawrzeć je w ciele formuły, bez konieczności
wpisywania do komórek arkusza. W tym celu należy zaznaczyć obszar 10 x 10 komórek, w
naszym przykładzie M4:V13, i wpisać dwu-argumentową formułę tablicową
={1;2;3;4;5;6;7;8;9;10}*{1\2\3\4\5\6\7\8\9\10}. Pierwszym argumentem jest wektor
poziomy, drugim wektor pionowy. Arkusz kalkulacyjny Ms Excel wyznaczając po kolei
wartości wszystkich 100 komórek będzie określał ich indeksy (offsety) i pobierał
odpowiednie elementy, aby wyliczyć ich iloczyn. W tym rozwiązaniu boczek i główka
tabliczki mnożenia są również wyznaczane poprzez formułę tablicową.
6
Formuły tablicowe - przykład 5 - złożona formuła
tablicowa
Nadszedł czas na bardziej praktyczny przykład. Załóżmy, że mamy tabelę podsumowującą
sprzedaż zrealizowaną w 12-tu miesiącach (w wierszach) w rozbiciu na stawki podatku VAT
(kolumny). Mamy wyznaczyć wartość podatku VAT za cały rok. Jest to typowy problem,
który powinien być rozwiązany za pomocą jednokomórkowej formuły tablicowej, ponieważ
należy wykonać wiele mnożeń, sumowań i zaokrągleń.
Formuła powinna wyglądać następująco: =SUMA(ZAOKR(B3:D14*B2:D2;2)).
Jak widać jest to prawie zwykła formuła, tak na prawdę różni się od zwykłej formuły dwoma
elementami: sposobem podania argumentów oraz zatwierdzeniem kombinacją klawiszy CtrlShift-Enter.
Kwoty netto sprzedaży znajdują się w zakresie B3:D14, należy je odpowiednio przemnożyć
przez stawki podatku VAT, które znajdują się w nagłówku tabeli w zakresie B2:D2. Ponieważ
wpisujemy formułę do jednej komórki i nie będziemy jej kopiować do innych komórek to nie
musimy się zastanawiać na trybem adresowania - wykorzystamy najprostszy, czyli tryb
względny.
7
Analizując zakresy tablic Excel określi ile mnożeń ma wykonać jako 12 wierszy x 3 kolumny,
czyli musi wyliczyć 36 iloczynów. Następnie każdy iloczyn zaokrągli i doda w pamięci (bez
angażowania komórki) do łącznej sumy. Po wykonaniu wszystkich mnożeń końcową sumę
wpisze do komórki, w której znajduje się ta formuła tablicowa.
Formuła tablicowa jest bardzo prosta i nie wymaga wykorzystania komórek pomocniczych
ani bardzo długich formuł, poza tym zapewnia poprawność wyniku i spójność wyliczeń dla
wszystkich miesięcy. W przypadku rozwiązania klasycznego, z formułami w pomocniczych
komórkach autor arkusza musi zadbać o właściwy tryb adresowania tak, aby podczas
kopiowania formuły do pozostałych komórek pomocniczych wykonywały poprawne
obliczenia.
Formuły tablicowe - przykład 6 - NPV - Net Present Value
Formuły tablicowe pokazują swoje zalety w bardzo spektakularny sposób w przypadku
wyliczania różnego rodzaju wskaźników ekonomicznych, których formuły operują na
większych zakresach komórek, wykonują operacje sumowania pośredniego, potęgowania itp.
Dobrą ilustracją tej grupy obliczeń analitycznych z obszaru kontrolingu (ang. controlling) jest
wyznaczanie wartości bieżącej netto inwestycji czy ogólniej projektu.
Ogólny wzór na wyznaczenie wartości bieżącej netto - NPV:
NPV - Net Present Value - wartość bieżąca netto
CF - Cash Flow - przepływy pieniężne okresu "t", CF = Przychody - Koszty
I - Investments - wartość inwestycji początkowej
8
r - stopa dyskontowa, czasami oznaczana jako "d"
n - ilość okresów, w jakich rozpatrujemy inwestycję
Pomimo względnie skomplikowanego wzoru na określenie NPV, zawierającego sumowanie
po okresach ilorazu stosując formuły tablicowe można wyznaczyć wartość za pomocą tylko
jednej, nieskomplikowanej formuły bez konieczności stosowania kolumn pomocniczych.
Kolumna "A" zawiera numery okresów, dla których rozpatrujemy inwestycję,
kolumna "B" zwiera informację o spodziewanych przychodach z inwestycji,
kolumna "C" zawiera planowane koszty związane z tą inwestycją w poszczególnych
okresach.
W kolumnie "F" mamy informacje o założonej stopie dyskontowej i wartości początkowej
inwestycji, czyli wydatku inicjującym projekt poza kosztami w kolejnych okresach.
Formuła tablicowa wyznaczająca wartość bieżącą netto - NPV jest następująca:
{=SUMA(ZAOKR((B9:B13-C9:C13)*(1/(1+F8)^A9:A13);2))-F9}
W zakresie B9:B13 znajdują się spodziewane przychody z inwestycji, a w zakresie C9:C13
mamy wpisane kwoty kosztów związanych z tą inwestycją (projektem) w odpowiednich
okresach. Zatem formuła tablicowa {=B9:B13-C9:C13} wyliczy wartości przepływów
pieniężnych CF dla wszystkich okresów. Jednak ta formuła musiała by być wpisana do
wektora pionowego składającego się z pięciu elementów, ponieważ generuje wynik
składający się z pięciu wartości. Z uwagi na fakt, że tych wyników użyjemy w dalszych
obliczeniach tablicowych (jako liczniki ułamka), to nie musimy się tą wielowartościowością
przejmować.
W zakresie A9:A13 są wpisane numery okresów, zatem formuła tablicowa
{=1/(1+F8)^A9:A13} wyliczy pięć współczynników dyskontujących. Nie musimy się
przejmować wielowartościowością wyniku tej formuły, ponieważ użyjemy ich jako
argumentu w dalszych obliczeniach tablicowych - jako mianownika ułamka. Na szczególną
uwagę zasługuje fakt użycia trybu adresowania względnego komórki F8 zawierającej wartość
stopy dyskontowej. Możemy skorzystać z tego trybu adresowania pomimo, że obliczenia będą
wykonane dla pięciu wierszy (9..13) ponieważ wynik formuły tablicowej nie będzie
kopiowany.
Formuła tablicowa {=ZAOKR((B9:B13-C9:C13)*(1/(1+F8)^A9:A13);2)} zwróci wektor
pięciu liczb będących wynikiem wyliczenia wartości ułamka (licznik/mianownik) dla
poszczególnych okresów zaokrąglając je do dwóch cyfr po przecinku dziesiętnym, czyli do
pełnych groszy.
9
Uzupełniając powyższą formułę tablicową o funkcję agregującą uzyskamy jedną liczbę.
Formuła tablicowa będzie miała postać: {=SUMA(ZAOKR((B9:B13C9:C13)*(1/(1+F8)^A9:A13);2))}.
Jeśli od wyliczonej wartości odejmiemy wartość inwestycji początkowej, której wartość
znajduje się w komórce F9 to uzyskamy wycenę efektywności planowanej inwestycji
(projektu) w aktualnej (bieżącej) wartości pieniądza. Ostateczna postać funkcji tablicowej
wyznaczającej wartość NPV jest postaci: {=SUMA(ZAOKR((B9:B13C9:C13)*(1/(1+F8)^A9:A13);2))-F9}.
Alternatywą dla funkcji tablicowych jest wykorzystanie kolumn pomocniczych wyliczanych
za pomocą formuł klasycznych. Takie podejście zaśmieca jednak arkusz wieloma zbędnymi
liczbami i jest podejściem dalece nieprofesjonalnym. Przykładowa metoda wyznaczenia
wartości NPV w oparciu o kolumny pomocnicze z formułami klasycznymi wygląda
następująco:

Podobne dokumenty