Quantcast
Channel: Malinowy Excel
Viewing all 291 articles
Browse latest View live

Przeterminowane faktury

$
0
0

Pokażę wam dziś jak sprawdzić, czy faktura jest przeterminowana. Temat szczególnie przydatny księgowym, ale nie tylko. Możemy bowiem sprawdzać termin wykonania zadania zleconego MalinowyExcel_new_małepracownikowi (to np. dla Project Managerów) czy termin ważności produktu spożywczego, czy jakiegoś kosmetyku. Zastosowań mnóstwo, a formuła i sposób sprawdzenia tego w Excelu – taki sam, niezależnie co sprawdzamy: faktury, deadline, szampon do włosów, jabłka czy gruszki :)

We wpisie będę sprawdzać faktury. Zobaczcie, tak wygląda mój arkusz:

Przeterminowane faktury formatka

Przeterminowane faktury formatka

Czyli będę chciała określić status faktury (czy jest przeterminowana, czy nie) i dodatkowo określę o ile dni jest przeterminowana. Na koniec, żeby dodać trochę grafiki, którą tak wszyscy kochamy :), zaznaczymy kolorem te wiersze, w których występuje faktura przeterminowana.

W komórce C3 wpisałam dziesiejszą datę za pomocą funkcji DZIŚ, czyli:

=DZIŚ()

Można oczywiście umieścić ją bezpośrednio w formule. Ja wybrałam tę formę, aby było bardziej czytelnie.

Określanie statusu faktury

Czyli mamy nr faktury i termin płatności. Kiedy zatem faktura jest przeterminowana? Kiedy jej termin płatności jest mniejszy niż dzisiejsza data. Ten właśnie warunek umieszczę w funkcji JEŻELI, w komórce C6 i kolejnych:

=JEŻELI(B6<$C$3;"przeterminowana";"")

Oczywiście zamiast słowa „przeterminowana” możecie umieścić dowolny tekst. Znaki cudzysłowia w trzecim argumencie oznaczają: nic nie wyświetlaj.

Po skopiowaniu formuły w dół (np. za pomocą tej metody – nie rozjedzie się wtedy formatowanie) efekt jest następujący:

Przeterminowane faktury - opis słowny

Przeterminowane faktury – opis słowny

Obliczanie liczby dni przeterminowania

Liczbę dni, o jakie faktura jest przeterminowana możemy również ustalić za pomocą funkcji JEŻELI. Ja znowu będę porównywać dzisiejszą datę do terminu płatności, ale można to oczywiście zrobić na podstawie ustalonego przed chwilą statusu.

Moja formuła jest taka:

=JEŻELI(B6<$C$3;$C$3-B6;0)

Jak widać praktycznie identyczna, co poprzednia – określająca status. A po skopiowaniu jej do pozostałych komórek, otrzymujemy taki efekt:

Przeterminowane faktury - liczba dni

Przeterminowane faktury – liczba dni

Zaznaczanie kolorem przeterminowanych faktur

Teraz pozostaje już tylko pokolorować wiersze (a może same komórki – jak chcecie), które zawierają przeterminowane faktury. Technika, którą teraz pokażę nie jest oczywista (uczestnikom moich szkoleń zawsze sprawia trochę problemu, ale tylko na początku :)).

Istotne jest, aby zaznaczyć zakres, który ma być pokolorowany. Aby kolorować całe wiersze, należy zaznaczyć zakres A6:D16 (jeśli chcecie kolorować tylko numery faktur – zaznaczcie A6:A16).

Następnie należy wejść do menu Narzędzia główne/ Formatowanie warunkowe/ Nowa reguła / Użyj formuły do określenia komórek, które należy sformatować. Pojawi się wtedy następujące okienko, w którym należy wpisać taką formułę, jak na obrazku:

Przeterminowane faktury - reguła formatowania warunkowego

Przeterminowane faktury – reguła formatowania warunkowego

Formuła jest taka (oczywiście można ustawiać inne reguły, np. opartą o status):

=$D6>0

Po wpisaniu tej formuły, koniecznie pamiętajcie o wybraniu formatu. Bez tego nie zobaczycie rezultatów (a wierzcie mi – nie ma nic bardziej frustrującego, jak szukanie błędu w formule, która jest dobrze napisana, tylko dlatego, że „nie koloruje” :)).

Ja wybrałam kolorowanie na niebiesko (wiem, w okienku formatowania mam żółty – zmieniłam zdanie :)) i uzyskałam taki efekt:

Przeterminowane faktury - wynik z formatowanie warunkowym

Przeterminowane faktury – wynik z formatowanie warunkowym

Tadam! I tyle. W sumie tak patrzę na tę tabelkę i trochę dziwnie wygląda to niebiesko-czerwone formatowanie. Lepiej byłoby ustawić wszystkie wiersze białe, a kolor mogłoby nadawać tylko formatowanie warunkowe. Kwestia gustu :) Zróbcie tak, jak wam pasuje.

Na koniec pliczek z gotowcem do pobrania:

I wersja wideo:


Jak obliczyć średnią bez skrajnych wartości

$
0
0

Ostatnio jeden z wiernych czytelników bloga (pozdrawiam cię Piotrek:)) potrzebował obliczyć wartość średnią, jednak bez skrajnych wartości. Wymyślił, że można to zrobić funkcją MalinowyExcel_new_małeŚREDNIA.WARUNKÓW. Oczywiście można, jednak nie jest to takie oczywiste, jak może się wydawać. Pomyślałam, że jest to temat warty wspomnienia na blogu: komuś z was też może się przydać. Jak nie ten konkretny przykład, to choćby ciekawy/nie do końca intuicyjny sposób podawania kryteriów tej funkcji. Tej i innych z grupy COŚTAM.JEŻELI, COŚTAM.WARUNKÓW. Oczywiście mam tutaj na myśli np. SUMĘ.JEŻELI CZY SUMĘ.WARUNKÓW :) W nich wszystkich kryteria wpisujemy dokładnie tak samo, czyli… tekstowo.

A żeby temat urozmaicić, kolorem zaznaczę jeszcze wartości skrajne.

Mój przykład będzie liczył średnią ocenę zawodników. Jest 6 sędziów, każdy daje swoją notę, 2 skrajne się odrzuca, resztę uśrednia i wychodzi wynik końcowy. Formatka wygląda tak:

Średnia bez skrajnych - formatka

Formatka

Formuła

Formuła będzie trochę skomplikowana, ale nie przerażajcie się.

Najpierw obliczę średnią bez skrajnych (część formuły z funkcją ŚREDNIA.WARUNKÓW), a potem jej wynik zaokrąglę funkcją ZAOKR do 2 miejsc po przecinku (tutaj możesz więcej poczytać o tej funkcji). Oto formuła (wpisz ją w komórce H4):

=ZAOKR(ŚREDNIA.WARUNKÓW(B4:G4;B4:G4;"<>"&MAX(B4:G4);B4:G4;"<>"&MIN(B4:G4));2)

Zobaczcie, że funkcja ŚREDNIA.WARUNKÓW, jako kryteria (3 i 5 argument) przyjęła dość dziwny zapis. Jest tam znak „<>” (w cudzysłowie), co oznacza, że komórki z argumentu 2 (potem 4) mają być różne od tego, co zwróci funkcja MAX (lub odpowiednio MIN). Żeby to jednak zadziałało, należy połączyć obie części operatorem &. W efekcie dostajemy „<>”&MAX(B4:G4). Tak właśnie wyglądają kryteria do funkcji typu ŚREDNIA.WARUNKÓW. Mają być tekstem. Trochę to mało intuicyjne, ponieważ np. w funkcji JEŻELI piszemy całe porównanie (np: B5<>5). W funkcji  ŚREDNIA.WARUNKÓW zaś za pierwszą część naszego wyrażenia służy argument z zakresem (np. 2 i 4 w moim przykładzie). Tak to po prostu działa i już. Reklamacje do Microsoftu :)

Jakby przepuścić to przez narzędzie Szacuj formułę, to zobaczcie, jak ładnie to wygląda:

Średnia bez skrajnych Narzędzie szacuj formułę

Narzędzie szacuj formułę

Czyli funkcja MAX wyliczyła maksymalną wartość (8,8 na obrazku), a to zostało połączone z operatorem <>, i dostajemy w wyniku tekstowe kryterium: „<>8,8”.

Po skopiowaniu formuły do pozostałych komórek, otrzymujemy taki wynik:

Średnia bez skrajnych wynik formuły

Wynik formuły

Zaznaczanie wartości skrajnych kolorem

A teraz równie ciekawa sprawa, czyli zaznaczanie kolorem wartości skrajnych. Chcę, aby dla każdego zawodnika wartości skrajne (najmniejsza i największa) zostały zaznaczone na czerwono. Zadanie z pozoru trudne, ponieważ ciężko to wyklikać z menu żeby się nie narobić. Znów najlepiej napisać formułę. Jak znamy funkcje logiczne, a konkretnie LUB, to już z górki :).

1. Najpierw trzeba zaznaczyć zakres, który będziemy chcieli formatować, czyli B4:G10.

2. Następnie wchodzimy do formatowania warunkowego, czyli: Narzędzia główne/ Formatowanie warunkowe/ Nowa reguła i tam wybieramy na liście Użyj formuły do określenia komórek, które należy sformatować.

Średnia bez skrajnych Opcja formatowania warunkowego

Wybór opcji formatowania warunkowego

To okienko wygląda nieco inaczej po wybraniu tej opcji.

3. Następnie w okienko wpisz taką formułę:

=LUB(B4=MIN($B4:$G4);B4=MAX($B4:$G4))

Oznacza ona, że jeśli wartość komórki będie równa wartości minimalnej lub maksymalnej z danego zakresu – zostanie sformatowana na czerwono. A całe okienko, po wpisaniu formuły wygląda tak:

Średnia bez skrajnych Reguła formatowania warunkowego

Reguła formatowania warunkowego

Efekt jest taki:

Średnia bez skrajnych wartości skrajne zaznaczone kolorem

Wartości skrajne zaznaczone kolorem

I tyle :)

Oczywiście zaproponowane przeze mnie rozwiązanie nie jest jedynym. Macie pomysł na inne? Dajcie znać, jestem ciekawa, co wymyślicie. Ja mam już ze 2 inne rozwiązania w głowie :)

Tradycyjnie plik źródłowy do pobrania tutaj:

 

 

Suma tylko wartości dodatnich lub ujemnych

$
0
0

Przy robieniu różnego rodzaju zestawień, często zachodzi potrzeba podsumowania tylko wartości dodatnich lub tylko ujemnych. Np. gdy tworzymy podsumowanie przychodów i rozchodów w MalinowyExcel_new_małefirmie czy choćby w projekcie – często chcemy znać sumę tychże wpływów i wydatków. Jedną z metod jest stworzenie oddzielnych kolumn dla wpływów i oddzielną dla wydatków (tak się robi przy raportach kasowych), a potem posumowanie każdej z nich zwykłą funkcją  SUMA. To oczywiście działa i jest świetnym i prostym rozwiązaniem, jednak nie zawsze tak chcemy/możemy.

Pokażę wam dzisiaj również bardzo prostą metodę, która potrzebuje jednej kolumny z wartościami, gdzie wpływy będą dodatnie, a wydatki ujemne. Dane wyglądają t

Suma tylko dodatnich wartości - formatka

Formatka

W komórce B14 chcę mieć sumę wpływów na konto, a w B15 – sumę wydatków.

Jeszcze zanim zacznę: zwróćcie uwagę, że na mojej liście wartości ujemne są zaznaczone na czerwono. Użyłam do tego zwykłego formatowania liczbowego (można to zrobić oczywiście formatowaniem warunkowym, jednak nie ma takiej potrzeby – można prościej). Zobaczcie:

Suma tylko dodatnich wartości - formatowanie liczbowe

Formatowanie liczbowe

Ok. Przejdźmy do formuły na wpływy i wydatki. Do obu obliczeń użyję funkcji SUMA.JEŻELI. Dla moich danych można ją napisać na co najmniej 2 sposoby. Do wyboru do koloru, choć ja wolę pierwszy (poniżej), ponieważ jest bardziej uniwersalny i niezależny od opisów.

Sposób 1 – kryteria oparte na liczbie

Aby obliczyć sumę wpływów, wpisz do komórki B14 taką formułę:

=SUMA.JEŻELI(B4:B11;">0")

A dla wydatków analogicznie (w B15):

=SUMA.JEŻELI(B4:B11;"<0")

I cała filozofia. Tak jak napisałam wcześniej: ta metoda jest bardziej uniwersalna, ponieważ bazuję na wartościach liczb, a nie na ich opisach (w kolumnie A). No i dzięki temu, że zarówno zakres w kolumnie B zarówno sumuję  jak i przeszukuję pod względem kryteriów – nie muszę wpisywać 3. argumentu.

Ale! Gdybyśmy mieli zarówno wpływy jak i wydatki wpisane jako wartości dodatnie – powyższa metoda już nie dałaby sobie rady…

Sposób 2 – kryteria oparte na tekście

Dla wpływów (B14):

=SUMA.JEŻELI($A$4:$A$11;A14;$B$4:$B$11)

Dla wydatków (B15):

=SUMA.JEŻELI($A$4:$A$11;A15;$B$4:$B$11)

Zobaczcie, że tutaj przeszukiwałam kolumnę A pod względem kryterium (pierwszy argument), a sumowałam kolumnę B (drugi argument). Dlatego też musiałąm wpisać wszystkie argumenty tej funkcji. Działa, tylko trochę więcej pisania. No i mamy klapę, gdy ktoś nam zrobi literówkę w opisie wpływ/wydatek. Natomiast jest to jedyna opcja, gdy zarówno wpływy jak i wydatki będą pisane jako wartości dodatnie. Poprzednia metoda by sobie z tym nie poradziła.

Jak widać – obie metody są ok, w zależności od danych, jakie mamy.

Tradycyjnie plik do pobrania poniżej:

I wersja wideo (dla pierwszej metody):

Tabele przestawne – konkurs z nagrodami!!!

$
0
0

Uwaga konkurs MalinowyExcelDziś przyszedł czas na obiecany konkurs! Ostatnio pytałam was na Facebooku i w newsletterze, jaki konkurs chcecie najpierw: o tabelach przestawnych czy o makrach? Zdania były oczywiście podzielone, ale większość z was najpierw chciała konkurs o… tabelach przestawnych! Przyznam, że strzelałam, że będziecie woleli makra 😉MalinowyExcel_new_małe

Tak więc dziś robimy konkurs o tabelach przestawnych, a kolejny konkurs będzie o makrach.

Skąd pomysł na konkursy?

Niedawno skontaktowała się ze mną firma Videopoint. Jest to firma z grupy Helion, zajmująca się tworzeniem wideokursów o przeróżnej tematyce, jednak głównie IT. Firma zaproponowała mi kupony rabatowe i kursy dla was – moich czytelników, w zamian za recenzję tych kursów. Przyznam, że dość sceptycznie podeszłam do tej propozycji, ponieważ obawiałam się, że jakość kursów będzie niska, a takich nie zmierzałam wam polecać. Obejrzałam więc te kursy (a konkretnie o tabelach przestawnych i 2 kursy o VBA: VBA Poziom 1 i VBA poziom 2) i stwierdziłam, że jednak się zaangażuję :) Wszystkie te kursy okazały się jednak warte obejrzenia, stąd ten konkurs i moja opinia na temat nagród w nim (czyli kursów) poniżej. Najpierw trochę o samych kursach, żebyście wiedzieli o co gracie w konkursach :), a potem pytanie konkursowe (łatwe).

Nagrody – wideokursy firmy Videopoint

W obu konkursach nagrodą główną są wideokursy firmy Videopoint o tejże tematyce. Nagrodą w dzisiejszym konkursie jest kurs o tabelach przestawnych:

NAGRODA: Kurs wideo - Tabele przestawne

NAGRODA: Kurs wideo:Tabele przestawne

a w kolejnym – kursy o makrach w Excelu (2 kursy: VBA Poziom 1 i VBA poziom 2)

Dodatkowo, dla każdego chętnego mam kupon rabatowy 15% na wszystkie kursy Videopointu. Kupon brzmi po prostu: EXCEL. Kupon ważny jest do końca lipca na całą ofertę Videopointu (kursy powyżej 30 zł), więc częstujcie się :).  Żeby wykorzystać kupon trzeba go podać w koszyku podczas składania zamówienia. Link do strony z kursami Office znajdziecie tutaj, a z głównej strony Videopointu dostaniecie się do pozostałych kursów (na które też działa kupon rabatowy). Widziałam, że Videopoint ma też kursy o innych programach z pakietu Office np.: Power Point. Przyznam, że ich nie oglądałam, więc nie mam zdania na ich temat, ale kto wie – może was zainteresują.

Kursy można obejrzeć na 2 sposoby: online i offline. Kurs online jest dostępny po zalogowaniu się na stronę Videopoint do panelu klienta. Kurs można też sobie ściągnąć na dysk (oczywiście również po zalogowaniu) i oglądać do woli nawet bez dostępu do internetu. Spodobała mi się zwłaszcza ta druga opcja, ponieważ dzięki niej można oglądać szkolenia nawet w podróży, kiedy jest mnóstwo czasu do wykorzystania :) W ten właśnie sposób ja oglądałam te kursy.

Tylko niestety po ściągnięciu i rozpakowaniu zipa, dalsze czynności nie są zbyt intuicyjne. Widzimy bowiem 3 katalogi i plik html, który nazywa się index.html. Aby odpalić kurs, trzeba otworzyć właśnie ten plik, jednak moim zdaniem nie jest to zbyt intuicyjne, co uważam za minus.

Na szczęście po przebrnięciu tego etapu – dalej jest już łatwo: otwiera nam się przeglądarka internetowa ze spisem treści kursu. Każdy kurs jest podzielony na krótsze lekcje (średnio po 5 minut). Mi to się spodobało, ponieważ dzięki temu łatwo jest znaleźć interesujące nas zagadnienie (za kolejnym razem nie zawsze chcemy słuchać wszystkiego od Adama i Ewy), które jest omówione krótko i konkretnie (co też uważam za plus: nie ma zbędnego blablingu).

Dodatkowo podobało mi się to, że kursy (zarówno w wersji offline i online) ogląda się w przeglądarce internetowej, dzięki czemu nie potrzeba żadnych specjalnych programów do odtwarzania. Klikasz i działa.

Ok, może teraz trochę o poszczególnych kursach.

Kurs wideo o tabelach przestawnych

NAGRODA: Kurs wideo - Tabele przestawne

NAGRODA: Kurs wideo:Tabele przestawne

Pełna nazwa kursu to Excel – tabele przestawne. Kurs video. Raporty i analiza danych, a stworzył go Adam Kopeć (pewnie znacie go z YouTube’a :)). Przyznam, że strasznie lubię oglądać filmy Adama, więc tym bardziej chętnie zajrzałam do kursu o tabelach przestawnych. Adam przedstawił temat tabel bardzo obszernie, zaczynając od prostych, aczkolwiek niezbędnych zagadnień, takich jak formatowanie czy układ tabeli, skończywszy na bardziej zaawansowanych tematach, takich jak model danych czy pola i elementy obliczeniowe. Poza tym omówione zostały nowe funkcjonalności tabel przestawnych, jak fragmentatory czy oś czasu.

Szczególnie podobało mi się to, że zaprezentowano również opcje, takie jak pokazywanie stron filtru raportu czy grupowanie dat. Są to funkcjonalności, które są wbudowane w Excela, dzięki czemu nie trzeba pisać do nich makr czy dodatkowych formuł. Użytkownicy często niestety ich nie znają i robią wszystko ręcznie, na piechotę, przez co dodają sobie sporo niepotrzebnej pracy. Dodatkowo Adam pokazuje praktyczne triki, dzięki którym np. opiera tabelę przestawną na danych z internetu, albo w jednej tabeli przestawnej pewne dane ma zgrupowane, a w drugiej – te same dane są rozgrupowane. Z książki się tego nie dowiemy :)

Cały kurs prowadzony jest na zrozumiałych przykładach, dzięki czemu można się skupić na samym działaniu tabeli przestawnej, a nie na zrozumieniu skomplikowanego przykładu (tutaj ogromny plus!). I co najważniejsze: pliki te można pobrać (są one dostępne na stronie kursu pod linkiem przykłady na ftp). Uważam, że jest to must have, ponieważ aby porządnie nauczyć się prezentowanych zagadnień konieczne jest, aby podczas oglądania lekcji jednocześnie ćwiczyć.

A jeśli chodzi o to, co mi się nie podobało, to jest to tylko jedna rzecz: jakość dźwięku: podczas całego kursu da się słyszeć straszny pogłos, przez co niezbyt miło słuchało mi się kursu. Na szczęście ta niedogodność nie wpłynęła na zawartość merytoryczną :)

VBA – poziom pierwszy i drugi

Kurs wideo: VBA poziom 1

Te kursy będą do wygrania w kolejnym konkursie :) Pełne ich tytuły to Excel 2013 i programowanie VBA. Kurs video. Poziom pierwszy. Tworzenie makr dla arkusza kalkulacyjnegoExcel 2016 i programowanie VBA. Kurs video. Poziom drugi. Zaawansowane techniki tworzenia makr.

Oba kursy prowadzi Jarosław Baca. Przyznam, że tego pana wcześniej nie znałam, ale prowadzony przez niego kurs też mi się podoba. Przyznam, że byłam bardzo  ciekawa, jak zostanie poprowadzony kurs wideo o makrach, ponieważ VBA to, bądź co bądź, jest już programowanie, czyli trudniejsza sprawa… I przyznam, że się mile zaskoczyłam, bo kurs jest bardzo poukładany i przejrzysty. Najpierw omówione zostały zagadnienia podstawowe – wprowadzające takie jak pętle czy konstrukcje warunkowe. Później zagadnienia bardziej zaawansowane takie jak formularze (choć dorzuciłabym do zagadnień szczegółowe omówienie przekazywania zmiennych ByRef i ByVal i zdarzeń). Najbardziej podobało mi się, że wszystko zostało omówione po kolei, dzięki czemu  w skomplikowaną tematykę programowania jesteśmy wprowadzani stopniowo, co ułatwia, a wręcz umożliwia zrozumienie.

Jeśli zaś chodzi o to, co mi się w tym kursie nie podobało, to na pewno sposób mówienia prowadzącego. Był jakiś taki sztuczny, często miałam wrażenie, że czyta. Nie wiem, czy tak było na prawdę, jednak po prostu czasem prowadzący zbyt szybko przeskakiwał z tematu na temat. Na szczęście jest to kurs wideo, więc można sobie z tym łatwo poradzić i po prostu cofając nagranie. No i chętnie zobaczyłabym na końcu jakiś duży przykład np. typowy scalacz, który by to wszystko poskładał razem.Kurs wideo: VBA poziom 2 Myślę, że byłoby to dobre podsumowanie kursu.

Ogólnie oba te kursy o VBA określiłabym jako świetny wstęp do pisania makr. Ale pamiętajcie, że nawet najlepszy kurs nic nie da, jak nie będziecie ćwiczyć. W programowaniu można napotkać miliony haczyków i często jest tak, że teoria mówi swoje, a w praktyce wygląda to zupeeeełnie inaczej. Dlatego najważniejsza jest praktyka, praktyka i jeszcze raz praktyka.

 

No właśnie. To właśnie sądzę na temat tych kursów. Jeśli byście chcieli kupić którykolwiek z nich, polecam najpierw zapoznać się z odkodowanymi lekcjami (znajdziecie je pod każdym kursem). Będziecie mogli wtedy wyrobić sobie o nich najważniejszą, czyli swoją opinię :) Ważne, żebyście wiedzieli, że oba kursy – o VBA i tabelach przestawnych – są stworzone dla osób, które chcą nauczyć się tych tematów, czyli albo nic nie umieją, albo są w nich początkujący i chcą poszerzyć swoją wiedzę. Osoby, które śmigają w tych tematach zapewne niczego nowego się nie dowiedzą :)

No ok. To teraz czas na konkurs :)

Jak się bawimy, czyli co trzeba zrobić, aby wygrać?

Pierwsza zabawa zaczyna się dzisiaj i trwać będzie do piątku 1 lipca 2016 r. Aby wziąć w niej udział, wystarczy w komentarzu do tego wpisu, odpowiedzieć na pytanie:

Dlaczego chcesz nauczyć się tabel przestawnych i jak zamierzasz je wykorzystać w swojej pracy?

Wybiorę najlepszą odpowiedź, a jej autor otrzyma kurs wideo o tabelach przestawnych.

A jeśli chcielibyście kupić ten kurs, to możecie oczywiście to zrobić tutaj (oczywiście koniecznie skorzystajcie z kuponu rabatowego 15%, o którym pisałam wyżej;)).

Zachęcam do wzięcia udziału w konkursie – każda odpowiedź może wygrać. Miło mi będzie, jak powiecie znajomym o konkursie – im też dajmy szansę! :)

Jak to zrobić, aby wszyscy byli zadowoleni?

Jak zapewne zauważyliście, po raz pierwszy na swoim blogu zaangażowałam się w taką współpracę z firmą. Zrobiłam to dlatego, że uznałam, iż każdy może na tym skorzystać.

  • Wy – czytelnicy, często piszecie do mnie pytania o tabele przestawne, pytacie jak można się ich nauczyć, niekoniecznie wydając mnóstwo pieniądzy na szkolenia. Na moim blogu są wpisy o tabelach, jednak zdaję sobie sprawę, że zdecydowanie nie wyczerpują one tematu. A ponieważ pojawił się dobry kurs, za rozsądne pieniądze, uznałam, że warto wam o tym po pierwsze powiedzieć, a po drugie dać możliwość zgarnięcia darmowego kursu (a jak nie to przynajmniej jeszcze tańszego (dzięki kuponowi, patrz wyżej).
  • Videopoint – ma szansę zainteresować was swoimi produktami i to nie tylko tymi o Excelu.
  • Ja – blogerka – chętnie dowiem się o waszych potrzebach odnośnie tabel przestawnych. Im więcej napiszecie, tym więcej będę miała informacji o tym, do czego je wykorzystujecie. Ta wiedza pomoże mi w pisaniu kolejnych wpisów właśnie na ten temat. Będę miała świetne, bo wasze i to praktyczne pomysły na przykłady z życia wzięte. Miło mi więc będzie, jeśli udostępnicie link do tego konkursu na Facebooku. No i dodatkowo, jeśli kupicie kursy wideo za pośrednictwem linków na moim blogu, ja otrzymam za to drobną prowizję (niektóre linki na moim blogu to tzw. linki partnerskie). Was to nic nie kosztuje, a mi zdecydowanie pomoże w utrzymaniu bloga :).

Zachęcam Was więc do wzięcia udziału w konkursie i mam też prośbę, abyście powiedzieli o konkursie swoim znajomym. Mam nadzieję, że konkurs też ich zainteresuje :)

Uwaga! Ten wpis zawiera tzw. linki partnerskie.

 

 

 

Rozstrzygnięcie konkursu o tabelach przestawnych

$
0
0

W zeszłym tygodniu ruszył konkurs o tabelach przestawnych. Bardzo dziękuję wszystkim, którzy wzięli udział w tym konkursie. Konkurs trwał do piątku, 1 lipca 2016, a więc nadszedł czas na wyłonienie zwycięzcy. Przyznam, że MalinowyExcel_new_małezadanie miałam trudne, bo wiele Waszych odpowiedzi na pytanie konkursowe mi się baaaardzo podobało. Wiele pokazywało, jak świetnym narzędziem są tabele przestawne i jak mogą usprawnić pracę. Niestety nagroda jest tylko jedna i musiałam się zdecydować. Przyznam, że wybór był dla mnie na tyle trudny, że poprosiłam o pomoc męża :) Wspólnymi siłami wybraliśmy zwycięzcę.

Przypomnę pytanie konkursowe:

Dlaczego chcesz nauczyć się tabel przestawnych i jak zamierzasz je wykorzystać w swojej pracy?

A oto wygrana odpowiedź:

Wykonuję różne projekty za pomocą standardowych narzędzi. Za każdym razem mam pewien zestaw danych pochodzących z wielu źródeł: Baza danych, XML, CSV, XLS. Wynikiem pracy są zestawienia szczegółowe oraz podsumowania. Z tego powodu poszukuję metod przyspieszenia, automatyzacji pracy za pomocą tabel przestawnych. Zastanawiam się jak utworzyć szablon/makro tabeli przestawnej, która z różnych zbiorów o tej samej strukturze utworzy standardowe zestawienia. Z tego powodu rozszerzenie wiedzy na ten tema wydaje mi się rzeczą kluczową. Bez niej chyba nie ruszę.

 

Zwycięzcą jest M515. Serdeczne gratulacje!!! Oto puchar dla zwycięzcy:

Puchar

Nagrodą jest obiecany kurs wideo o tabelach przestawnych autorstwa Adama Kopecia, wydany przez firmę Videopoint:

NAGRODA: Kurs wideo - Tabele przestawne

M515 – w ciągu tego tygodnia skontaktuję się z Tobą mailowo, w celu wręczenia nagrody :)

Wszystkim uczestnikom jeszcze raz bardzo dziękuję za udział i zwycięzcy gratuluję!

Od razu skorzystam z okazji i zapowiem, że kolejny konkurs, który obiecałam na Facebooku – o makrach – ruszy we wrześniu. Na spokojnie po wakacjach, kiedy wszyscy będziemy zwarci i gotowi do nowego wyzwania, jakim będą… makra! Oczywiście nowe wpisy na blogu do tego czasu będą (z małą przerwą na urlop :)) :).

Jak przyporządkować dane (WYSZUKAJ.PIONOWO)?

$
0
0

Częstym pytaniem, jakie mi zadajecie w mailach, na szkoleniach jest: Jak zrobić, aby na podstawie określonych danych znaleźć inne dane? Albo inna wersja: Co zrobić, gdy mam tabelę z danymi i na ich podstawie, chcę do niej dokleić dane z innej tabeli?

Żeby lepiej zobrazować o co chodzi, weźmy przykład: wybrałam kilku pracowników (imię i nazwisko) i chcę przyporządkować do nich datę zatrudnienia. Potrzebne dane mam w innej tabeli. Dla uproszczenia formuły – wszystkie dane będą w tym samym arkuszu. Oto formatka:

Formatka

Formatka

Chodzi o to, by w pierwszej tabelce, na podstawie imienia i nazwiska pracownika, przyporządkować datę zatrudnienia. Wszystkie potrzebne dane są w drugiej tabelce i to właśnie z niej będziemy je pobierać. Weźmy np. Ninę Dębicką. Aby dopasować jej datę zatrudnienia, najpierw odnajdujemy ją w drugiej tabeli. Kiedy już ją znajdziemy – wyświetlamy datę zatrudnienia z drugiej kolumny przeszukiwanej tabeli (nie interesuje nas, gdzie ta tabela jest w arkuszu). Chcemy odnaleźć dokładnie Ninę Dębicką, a nie kogoś innego.

Wyróżnione słowa w akapicie powyżej to 4 argumenty funkcji WYSZUKAJ.PIONOWO (w wersji angielskiej: VLOOKUP), którą użyjemy do rozwiązania tego zadania. Da się to zrobić na wiele innych sposobów, jednak to jest zdecydowanie najpopularniejsze.

Trochę teorii…

Funkcja WYSZUKAJ.PIONOWO posiada 4 argumenty:

  1. szukana wartość, na podstawie której chcemy przyporządkować dane(w przykładzie: imię i nazwisko),
  2. zakres/tabela, w której będziemy szukać (w przykładzie: $D$3:$E$8),
  3. nr kolumny, z której wartość chcemy wyświetlić, jak już znajdziemy szukaną wartość (w przykładzie: 2),
  4. sposób wyszukiwania: jeśli szukamy dokładnie, tak jak w przykładzie, to tutaj wpisujemy zero (0).

Ostatni argument zazwyczaj budzi dużo kontrowersji, często użytkownicy wiedzą, żeby tam wpisać zero, ale nie wiedzą dlaczego. Prezentowany przykład nie jest idealny do wytłumaczenia tego zagadnienia, więc napiszę jeszcze artykuł o innym zastosowaniu WYSZUKAJ.PIONOWO, takim, gdy wpisujemy 1 (albo nic) w ostatnim argumencie tej funkcji. Mam nadzieję, że wtedy wątpliwości się rozjaśnią.

Co jeszcze koniecznie należy pamiętać o tej funkcji to to, że zakres, który przeszukujemy (drugi argument), zawsze powinien zawierać szukaną informację (u nas: pracownika) w pierwszej kolumnie. W przykładzie tak właśnie jest, więc wszystko pięknie działa. Gdyby jednak zamienić kolejność kolumn przeszukiwanego zakresu (najpierw data zatrudnienia, a potem pracownik) – funkcja zwróciłaby błąd (#N/D).

Odnośnie przeszukiwanego zakresu (u nas to druga tabelka), warto też pamiętać, że nie ma znaczenia, gdzie w arkuszu on się znajduje. Może być w dowolnym miejscu. Trzeci argument – nr kolumny – zawsze musi odnosić się tylko do zakresu, a nie do kolumny arkusza. Zobaczcie, u nas w przykładzie przeszukiwany zakres jest w kolumnach D i E, ale kolumna, którą wyświetlam ma numer 2, ponieważ ten numer jest numerem kolumn zakresu, a nie arkusza. Nasz zakres ma 2 kolumny: 1- Pracownik, 2 – Data zatrudnienia. Zobaczcie na rysunku:

Kolumny zakresu

Funkcja

Ok. To po tych obszernych wyjaśnieniach przejdę do samej funkcji. Należy ją wpisać w komórce B3 i skopiować w dół (aby zachować formatowanie polecam sposób, który opisałam tutaj). Sama funkcja wygląda tak:

=WYSZUKAJ.PIONOWO(A3;$D$3:$E$8;2;0)

Dla ułatwienia w kreatorze:

Kreator WYSZUKAJ.PIONOWO

Kreator WYSZUKAJ.PIONOWO

I tak, jak wcześniej opisywałam, argumenty po kolei to:

  1. najpierw szukamy A3 – Niny Dębickiej
  2. gdzie szukamy –  w zakresie $D$3:$E$8 (zablokowanym, żeby został takki  sam dla każdej osoby)
  3. chcemy  zwrócić/wyświetlić wartość w drugiej kolumnie (2) dla szukanej osoby
  4. szukamy dokładnie – tutaj wpisujemy 0 (zero).

Wynik jest taki:

Wynik

Wynik

Jeszcze plik do pobrania oczywiście:

No i tyle. Nie ma co więcej wymyślać :) Mam nadzieję, że wam się przyda!

 

Obliczanie czasu pracy: godziny nocne REAKTYWACJA

$
0
0

Dziś chciałam napisać o czymś innym, ale Łukasz skutecznie skłonił mnie, abym znowu zajęła się tematem godzin nocnych;) Łukasz zauważył, że w poprzednim wpisie, a co za tym idzie – w MalinowyExcel_new_małepoprzedniej formule – jest błąd. Nieprawidłowo liczyła ona bowiem czas pracy nocny, gdy pracownik zaczynał pracę o 6:00 (godzina graniczna godzin nocnych), a kończył o 23:00 (już w trakcie godzin nocnych). Czyli przepracował 1 godzinę nocną. Łukasz – dzięki wielkie za uwagę i wytrwałość w przypominaniu mi o temacie 😉

Poprzednia formuła wyglądała tak:

=JEŻELI(ORAZ(A6>=nocna_do;A6<nocna_od;B6>nocna_do;B6<=nocna_od;D6<=nocna_od);0;JEŻELI(ORAZ(C6>=nocna_od;D6<=nocna_do+1);D6-C6;JEŻELI(ORAZ(C6<nocna_od;D6<=nocna_do+1;C6>nocna_do);D6-nocna_od;JEŻELI(ORAZ(LUB(C6>=nocna_od;C6<nocna_do);D6>nocna_do+1);nocna_do+1-C6;JEŻELI(ORAZ(C6<nocna_od;D6>nocna_do+1);nocna_do+1-nocna_od;0)))))

Przyznam, że perspektywa analizy formuły-tasiemca wcale mi się nie widziała… Zabierałam się więc do tego jak pies do jeża. Nie mogłam jednak odkładać tego w nieskończoność, więc w końcu zasiadłam do pracy. Oczywiście, jak zobaczyłam formułę (dla przypomnienia wyklejam ją powyżej), to się przeraziłam! Analiza jej zajęłaby mi wieki i z pewnością poszarpałabym sobie na niej nerwy, a tego chciałam za wszelką cenę uniknąć 😉 Stwierdziłam więc, że napiszę ją od nowa. Oczywiście oznaczało to dla mnie wgryzanie się w temat na nowo i wymyślanie wszystkich możliwych opcji na nowo… Ech, no cóż. Do dzieła!

Założenia mojego rozumowania i wyliczeń były takie:

  1. Pracownik pracuje krócej niż 24 godziny, czyli:
  2. Godzina wejścia i godzina wyjścia nie mogą się sobie równać.
  3. Wpisywane są tylko godziny wejścia i wyjścia, a nie daty (szkoda, bo to rozwiązało by problem…).

Możliwe opcje

Tak wygląda kartka, na której rozrysowałam sobie wszystkie (rety – mam nadzieję!) opcje:

Możliwe opcje godzin nocnych

Możliwe opcje godzin nocnych

No właśnie… trochę tego jest. Przyznam, że opcja 5 zaznaczona na czerwono, to już mega wymysł i chyba nikt tak nie pracuje, ale jakby co, to jest…

Rozpatrzyłam następujące przypadki:

  1. Godziny pracy przekraczają północ –> na zdjęciu zaznaczone ołówkiem, na formatce czarne warianty 1-6,
  2. Godziny pracy nie przekraczają północy –> na zdjęciu zaznaczone czerwonym długopisem, na formatce czerwone warianty 1-6.

Te opcje w tabelce w Excelu wyglądają tak (formatka):

Możliwe opcje i formatka

Możliwe opcje i formatka

No właśnie – jeśli chodzi o formatkę to też trochę ją zmieniłam versus poprzedni raz. Dodałam kolumny Przekroczenie północy, Nocne z przekroczeniemNocne bez przekroczenia.  Usunęłam zaś obie kolumny robocze Rob od i Rob do.

A to dalsza część moich przemyśleń i pracy nad formułą – schemat liczenia godzin nocnych, czyli zagnieżdżanie JEŻELI (mam nadzieję, że coś widać – pisałam ołówkiem):

Schemat zagnieżdżania funkcji JEŻELI

Schemat zagnieżdżania funkcji JEŻELI

Ok. No to czas na formuły.

Nazwane komórki

Aby ułatwić sobie pracę – nazwałam komórki. Komórka A2 to nocna_od, a komórka B2 to nocne_do. Aby nazwać komórki, należy zaznaczyć komórkę, którą chcesz nazwać, kliknąć na pole nazwy (lewy górny róg obok paska formuły) i wpisać wybraną nazwę. Zatwierdzamy oczywiście Enterem. Polecam skorzystać – formuły będą znacznie bardziej czytelne.

Formuły

Przekroczenie północy

To prościutka formułka, która sprawdza, czy godziny pracy przekroczyły północ. Będzie mi potem potrzebna. W komórce D6:

=B6>C6

Oczywiście działa ona wtedy, gdy spełnione są założenia!

Czas pracy

To już nieco bardziej skomplikowane, bo wchodzi nam JEŻELI. Ale spoko – to jeszcze pikuś ;). Komórka E6:

=C6+JEŻELI(D6;1;0)-B6

Nocne z przekroczeniem

I zaczynają się schody… :). Komórka F6:

=JEŻELI(ORAZ(B6<nocna_do;C6<nocna_do;C6<B6);nocna_do-B6+1-nocna_od+C6;JEŻELI(B6>=nocna_od;JEŻELI(C6<=nocna_do;1-B6+C6;1-B6+nocna_do);JEŻELI(C6<=nocna_do;1-nocna_od+C6;1-nocna_od+nocna_do)))

Nocne bez przekroczenia

I dalsze schody w komórce G6:

=MAX(0;JEŻELI(ORAZ(B6<nocna_do;C6<=nocna_do);C6-B6;JEŻELI(ORAZ(B6>nocna_od;C6>nocna_od);C6-B6;JEŻELI(B6>=nocna_do;JEŻELI(C6<=nocna_od;0;C6-nocna_od);JEŻELI(C6<=nocna_od;nocna_do-B6;nocna_do-B6+C6-nocna_od)))))

Nocne

I formułka wyliczająca godziny nocne – bierze odpowiednie godziny nocne: z przekroczeniem lub bez. Komórka H6:

=JEŻELI(D6;F6;G6)

Dzienne

I dzienne jako różnica godzin wszystkich i nocnych – prościzna w komórce I6:

=E6-H6

I wynik:

Wynik

Wynik

Wow. Trochę tego jest, ale moim zdaniem jest znacznie czytelniej niż ostatnim razem. Dla chętnych jak zwykle – plik do pobrania. Dajcie znać w komentarzach, czy tym razem uwzględniłam wszystkie opcje :) Mam nadzieję!

 

Pierwszy czwartek miesiąca

$
0
0

Dziś temat, który miałam z tyłu głowy już dość długo. Pierwszy raz zaczęłam się zastanawiać na nim, kiedy tworzyłam brytyjski grafik czasu pracy. Anglicy mają kilka świąt, które wypMalinowyExcel_new_małeadają zawsze w pierwszy poniedziałek miesiąca. Akurat nie było konieczności, abym wprowadzała taki warunek do arkusza, jednak zastanowił mnie on. Ponieważ od razu nie wymyśliłam rozwiązania, zostawiłam temat. Niestety nadal siedział mi on w głowie. :)

Niedawno odezwała się do mnie Marta, która pracuje w księgowości, i odgrzebała kwestię spod gruzów innych pomysłów. Marta ma bardziej skomplikowany problem, jednak zagadnienie, które dzisiaj omówię, jest niezbędne do jego rozwiązania. Pokażę dziś, jak się ustala datę np. pierwszego czwartku miesiąca. Napisałam „np.”, ponieważ zaprezentowaną metodą można ustalić dowolny numer dowolnego dnia tygodnia (oczywiście bez przesady – nie będziemy ustalać 15. poniedziałku miesiąca, bo taki przecież nie istnieje). 😉

Aby formuła była uniwersalna, będziemy potrzebowali następujących danych:

  1. Który z kolei dzień nas interesuje (np. pierwszy).
  2. Jaki dzień tygodnia (np. czwartek).
  3. W jakim miesiącu (np. październik).
  4. W którym roku (np. 2016).

Formatka jest prościutka i wygląda tak:

Pierwszy czwartek miesiaca-formatka

Formatka

Dane wejściowe

Tutaj pamiętajcie, że formuła jest napisana tak, że pierwszym dniem tygodnia jest poniedziałek. Dlatego drugi argument w funkcji DZIEŃ.TYG to 2. Jeśli chcesz inaczej, to odpowiednio zmień ten argument.

Formuła

Jeśli chodzi o formułę, to jej logika jest prosta. Nie ma innego wyjścia, jak tylko po kolei sprawdzić, jakimi dniami tygodnia są pierwsze 7 dni danego miesiąca. Jeśli któryś z nich będzie naszym szukanym czwartkiem, wyświetlimy tę datę. Spróbujmy prześledzić to na podstawie października 2016. Tak wygląda on w kalendarzu:

malinowyexcel-pierwszy-czwartek-miesiaca-kalendarz

Kalendarz 10.2016

I schemat sprawdzania:

malinowyexcel-pierwszy-czwartek-miesiaca-logika

Etapy rozwiązania

Logika może i prosta, jednak zwykłymi formułami nie da się tego zrobić bez wielu dodatkowych kolumn pomocniczych, których chcemy uniknąć. Pozostają 2 rozwiązania: formuła tablicowa lub VBA. Dziś pokażę Wam tę pierwszą opcję, a drugą – jeśli będziecie chcieli (dajcie znać w komentarzach).

Formuła sprawdzająca dzień tygodnia pierwszych 7 dni miesiąca, a następnie wyświetlająca datę jest taka (komórka E3 na obrazku „Formatka”):

=MAX(JEŻELI(DZIEŃ.TYG(DATA(D3;C3;{1;2;3;4;5;6;7});2)=B3;DATA(D3;C3;{1;2;3;4;5;6;7});0))+7*(A3-1)

 

Tablicowym elementem formuły jest ostatni argument funkcji DATA – dzień. To on jest zmienny w dacie (miesiąc i rok pozostają takie, jak wprowadziliśmy na formatce). Stąd też nawias klamerkowy naokoło numerów dni – te klamerki musimy wstawić samodzielnie.

A oto wynik formuły:

malinowyexcel-pierwszy-czwartek-miesiaca-wynik

Wynik

Jak działa formuła?

  1. Formuła najpierw podstawia odpowiednie argumenty do funkcji DATA (tutaj ten tablicowy element).
  2. Następnie sprawdza jakim dniem tygodnia jest dana data (za pomocą funkcji DZIEŃ.TYG).
  3. Potem funkcją JEŻELI porównuje wynikowy dzień tygodnia do dnia wskazanego w formatce (czwartek). Jeśli jest taki sam – zwraca tę datę, jeśli nie – 0 (zero).
  4. Dalej funkcja MAX, która dostała do sprawdzenia tablicę z wynikami funkcji JEŻELI, wybiera największą wartość, czyli naszą datę.
  5. Na końcu jeszcze dodawana jest wielokrotność, gdybyśmy chcieli wyświetlić przykładowo drugi czwartek miesiąca (kolejny czwartek jest zawsze o ileś siódemek większy niż pierwszy).

Trochę to zawiłe, ale działa. Przekonajcie się sami i koniecznie dajcie znać w komentarzach! :)

I wersja wideo:

 

 

Redakcja językowa: Aleksandra Wasiak

 


Data najbliższego przelewu

$
0
0

Dzisiaj będzie rozbudowanie tematu z poprzedniego wpisu, w którym opisywałam jak poznać datę np. pierwszego czwartku miesiąca. Wykorzystałam do tego dość skomplikowaną formułę (ale MalinowyExcel_new_ma-C5-82eformułę! nie makro ;)), zawierającą aż 4 funkcje. Dziś sobie to rozszerzymy, ponieważ założenia są takie:

W naszej firmie przelewy wychodzą tylko w pierwszy albo trzeci czwartek miesiąca. Jeśli faktura się „nie załapie” na pierwszy czwartek – jest płacona w trzeci czwartek, jeśli na niego się „nie załapie: – dopiero w pierwszy czwartek następnego miesiąca. Itd…

Straszne :)

Czyli, z danych do zadania potrzebujemy na pewno termin płatności faktury i kilka komórek roboczych (można byłoby je wrzucić bezpośrednio do formuły – jak chcecie). Formatka do tego zadania wygląda tak:

Formatka

Formatka

W komórkach w wierszu 3 są komórki robocze, umożliwiające parametryzację zadania:

  • A3: dzień tygodnia, który nas interesuje (czwartek = 4)
  • B3: numer czwartku (pierwszy, drugi, …)
  • C3: numer kolejnego czwartku (pierwszy, drugi, …)
  • D3: numer czwartku kolejnego miesiąca (pierwszy, drugi, …)

Zauważcie też, że daty interesujących nas czwartków są w kolejności odwrotnej (nie chronologicznie). Jest to istotne dla formuły wyliczającej datę płatności – ta kolejność musi taka być.

Logika…

A jeśli chodzi o logikę, to jest ona prosta: mamy do sprawdzenia 3 daty:

  1. Pierwszy czwartek miesiąca
  2. Trzeci czwartek miesiąca
  3. Pierwszy czwartek kolejnego miesiąca

Jeśli nasz termin płatności jest większy niż jedna z tych dat, ale mniejszy niż następna – mamy szukaną datę.

Przykładowo: pierwszy i trzeci czwartek listopada 2016 to odpowiednio 3.11 i 17.11. Jeśli termin płatności to 7.11.2016 – przelew zostanie zrealizowany dopiero 17.11 (na 3.11, mimo że bliżej, już się „nie załapał”). A gdy terminem jest 20.11 – płatność będzie dopiero 1.12 – jest to pierwszy czwartek następnego miesiąca.

Formuły

Zacznijmy od pierwszego czwartku miesiąca faktury (D6):

=MAX(JEŻELI(DZIEŃ.TYG(DATA(ROK($A6);MIESIĄC($A6);{1;2;3;4;5;6;7});2)=$A$3;DATA(ROK($A6);MIESIĄC($A6);{1;2;3;4;5;6;7});0))+7*(B$3-1)

Ta formuła różni się nieco od tej z poprzedniego wpisu tym, że datę czwartku sprawdzamy w oparciu o termin płatności, a nie określone przez użytkownika miesiąc i rok. Czyli dodałam jeszcze funkcje ROK i MIESIĄC i oparłam formułę na komórkach pomocniczych w wierszu 3. Reszta jest identyczna jak ostatnio.

Podobnie wygląda kwestia trzeciego czwartku miesiąca (C6):

=MAX(JEŻELI(DZIEŃ.TYG(DATA(ROK($A6);MIESIĄC($A6);{1;2;3;4;5;6;7});2)=$A$3;DATA(ROK($A6);MIESIĄC($A6);{1;2;3;4;5;6;7});0))+7*(C$3-1)

I na koniec pierwszy czwartek kolejnego miesiąca (B6):

=MAX(JEŻELI(DZIEŃ.TYG(DATA(ROK($A6);MIESIĄC($A6)+1;{1;2;3;4;5;6;7});2)=$A$3;DATA(ROK($A6);MIESIĄC($A6)+1;{1;2;3;4;5;6;7});0))+7*(D$3-1)

Ta formuła różni się tylko dodaniem +1 do miesiąca. Sprawdza ona bowiem pierwszy czwartek w miesiącu kolejnym (jeśli termin płatności będzie na grudzień – cudowna funkcja DATA poradzi sobie z tym i sprawdzi styczeń kolejnego roku).

Ok. To teraz czas na datę przelewu (E6). Tutaj cudu nie ma: szukamy daty, która jest większa lub równa naszemu terminowi płatności. Do tego cudownie nadaje się funkcja PODAJ.POZYCJĘ z ostatnim argumentem równym -1 (minus 1). To spowoduje, że nasza funkcja będzie właśnie w ten sposób szukała. Ma to jednak takie wymaganie, że nasze dane (w tym wypadku daty czwartków) są posortowane malejąco! To jest must have i bez tego nie zadziała (dlatego kolumny są ułożone nie-chronologicznie). Oto formuła:

=INDEKS(B6:D6;1;PODAJ.POZYCJĘ(A6;B6:D6;-1))

W efekcie otrzymujemy:

Wynik

Wynik

I voilà!

Ile jest aktywnych polis ubezpieczeniowych?

$
0
0

Jakiś czas temu jedna z czytelniczek bloga zapytała mnie, w jaki sposób obliczyć ile polis ubezpieczeniowych z jej listy jest aktywnych. O każdej polisie wiemy kiedy się zaczęła i jaka jest jej data ważności. Interesuje nas: ile polis na dany dzień (dziś) jest aktywnych? Pokazaną metodę możemy zastosować w milionie innych sytuacji: czy pracownik pracował w interesującym cię okresie, data ważności produktu/faktury (choć tutaj wystarczy tylko data do – zobacz tutaj), realizacja projektu w terminie itd…

Korci mnie, żeby od razu wyliczyć ile czasu zostało do przeterminowania polisy i żeby, jeśli termin jest bliski, na tej podstawie wyświetlać jakiś komunikat lub kolorować zbliżające się daty… Ale to w kolejnych wpisach :)

Oto formatka:

Formatka

Formatka

W żółtej komórce B3 należy wpisać dzisiejszą datę (można ją też oczywiście zaszyć w formule, jednak myślę, że wrzucając ją do oddzielnej komórki, mamy więcej możliwości działania). Możemy to zrobić na 2 sposoby:

  1. Skrótem klawiszowym Ctrl + ; (wtedy wpiszemy datę na sztywno)
  2. Funkcją DZIŚ() (wtedy data będzie się codziennie aktualizowała), czyli formuła:
=DZIŚ()

Najprostszy sposób

Samo sprawdzenie, czy polisa jest jeszcze aktywna, polega na sprawdzeniu, czy dzisiejsza data mieści się w przedziale data oddata do. Jeśli się mieści – polisa jest aktywna, jeśli nie – nieaktywna. Logikę tego prezentuje poniższy rysunek:

tablica-malinowy-excel-aktywne-polisy

Czyli nasza data (zaznaczona różową kreseczką na osi liczbowej), musi wpaść jednocześnie do 2 przedziałów, czyli spełnić 2 warunki. Musi być:

  1. większa lub równa od daty od i
  2. mniejsza lub równa od daty do

Aby sprawdzić te 2 warunki, użyjemy funkcji ORAZ i JEŻELI. Do komórki D8 wpiszmy następującą formułę:

=JEŻELI(ORAZ(B8<=$B$3;C8>=$B$3);1;0)

Czyli, jeśli polisa jest aktywna – otrzymamy 1, jeśli jest nieaktywna – 0. Policzenie aktywnych polis będzie teraz bardzo proste – zwykła funkcja SUMA w komórce D6:

=SUMA(D8:D10)

A poniżej wersja wideo, przedstawiająca opisaną wyżej metodę:

 

Alternatywne sposoby

Liczbę aktywnych polis można oczywiście policzyć na wiele innych sposobów. Omówię tutaj 2, które na szybko przychodzą mi do głowy. W pierwszym użyję funkcji SUMA.WARUNKÓW, w drugim – SUMA.ILOCZYNÓW.

Sposób 1, w komórce C5:

=SUMA.WARUNKÓW(D8:D10;B8:B10;"<="&B3;C8:C10;">="&B3)

Sposób 1, w komórce C6:

=SUMA.ILOCZYNÓW(--(B8:B10<=$B$3);--(C8:C10>=$B$3))

Mi się bardziej podoba sposób 2, ponieważ jest w nim mniej pisania ;), ale szybciej zadziała nam sposób 1. Choć i tak najbardziej do gusty przypadł mi sposób najprostszy, czyli ten opisany na początku. Myślę, że daje on nam najwięcej informacji. Oprócz samej sumy aktywnych polis, możemy w nim dowiedzieć się, które polisy są jeszcze aktywne, a jestem przekonana, że to będzie następne pytanie :) Dwa kolejne sposoby tego nie mówią – informują nas jedynie o sumie. Mało rozwojowo 😉

To tyle w temacie badania, czy jakaś data mieści się w przedziale. Jeśli macie jakieś jeszcze pomysły, kiedy można użyć tego sposobu – dajcie znać w komentarzach, żeby inni też mogli to wykorzystać.

 

 

Mikołajkowy konkurs z nagrodami o makrach (VBA)!

$
0
0

malinowyexcel-mikolajkowy-konkurs-o-makrachW czerwcu, kiedy ruszył konkurs o tabelach przestawnych,  obiecałam, że będzie kolejny – tym razem o makrach. Makra… tak… temat gorący i jakże pożądany w dzisiejszych czasach, gdzie liczy się efektywność pracy i oszczędność czasu. Każdy chce robotę mieć zrobioną na już (albo na wczoraj) i to jak najmniejszym nakładem pracy. Zwłaszcza jeśli dotyczy to tematów powtarzalnych i… nudnych 😉 Makra właśnie po to są, aby tę pracę przyspieszać i ułatwiać, dzięki czemu pozwalają nam zająć się tematami naprawdę wymagającymi udziału człowieka. Brzmi pięknie, tylko jeszcze trzeba się tego nauczyć… Myślę, że dzisiejszy konkurs jest dla tych wszystkich, którzy własnie tego chcą (lub znają kogoś, kto by chciał – w końcu idą święta :)).

A teraz szczegóły konkursu…

Pytanie konkursowe

Po co chcesz się nauczyć pisać makra? Do czego będziesz ich używać?

Tradycyjnie, odpowiedzi należy umieścić w komentarzu pod tym wpisem.

Czas trwania konkursu to wtorek 6.12.2016 – środa 14.12.2016.

Wygra ta odpowiedź, która wyda mi się najciekawsza 🙂 A wygrać się opłaca, ponieważ nagrodą, a raczej nagrodami, w konkursie są…

Nagrody – wideokursy o makrach firmy Videopoint

Zacznę od tego, że dla wszystkich zainteresowanych mam kupon rabatowy -15% do sklepu internetowego  Videopoint. Aby skorzystać z kuponu należy podać hasło MalinowyExcel. Kupon jest ważny do końca grudnia 2016 i obejmuje produkty z ceną powyżej 30 zł.

A teraz trochę więcej o nagrodzie głównej, czyli 2 wideokursach:

Kurs wideo: VBA poziom 1

Excel 2013 i programowanie VBA. Kurs video. Poziom pierwszy. Tworzenie makr dla arkusza kalkulacyjnego i

Excel 2016 i programowanie VBA. Kurs video. Poziom drugi. Zaawansowane techniki tworzenia makr.

Oba kursy prowadzi Jarosław Baca. Przyznam, że tego pana wcześniej nie znałam, ale prowadzony przez niego kurs mi się podoba. Byłam bardzo  ciekawa, jak zostanie poprowadzony kurs wideo o makrach, ponieważ VBA to, bądź co bądź, jest już programowanie, czyli trudniejsza sprawa… I przyznam, że się mile zaskoczyłam, bo kurs jest bardzo poukładany i przejrzysty. Najpierw omówione zostały zagadnienia podstawowe – wprowadzające takie jak pętle czy konstrukcje warunkowe. Później zagadnienia bardziej zaawansowane takie jak formularze (choć dorzuciłabym do zagadnień szczegółowe omówienie przekazywania zmiennych ByRef i ByVal i zdarzeń). Najbardziej podobało mi się, że wszystko zostało omówione po kolei, dzięki czemu  w skomplikowaną tematykę programowania jesteśmy wprowadzani stopniowo, co ułatwia, a wręcz umożliwia zrozumienie.

Jeśli zaś chodzi o to, co mi się w tym kursie nie podobało, to na pewno sposób mówienia prowadzącego. Był jakiś taki sztuczny, często miałam wrażenie, że czyta. Nie wiem, czy tak było na prawdę, jednak po prostu czasem prowadzący zbyt szybko przeskakiwał z tematu na temat. Na szczęście jest to kurs wideo, więc można sobie z tym łatwo poradzić i po prostu cofając nagranie. No i chętnie zobaczyłabym na końcu jakiś duży przykład np. typowy scalacz, który by to wszystko poskładał razem.Kurs wideo: VBA poziom 2 Myślę, że byłoby to dobre podsumowanie kursu.

Ogólnie oba te kursy o VBA określiłabym jako świetny wstęp do pisania makr. Ale pamiętajcie, że nawet najlepszy kurs nic nie da, jak nie będziecie ćwiczyć. W programowaniu można napotkać miliony haczyków i często jest tak, że teoria mówi swoje, a w praktyce wygląda to zupeeeełnie inaczej. Dlatego najważniejsza jest praktyka, praktyka i jeszcze raz praktyka.

Jeśli byście chcieli kupić którykolwiek z nich, polecam najpierw zapoznać się z odkodowanymi lekcjami (znajdziecie je pod każdym kursem). Będziecie mogli wtedy wyrobić sobie o nich najważniejszą, czyli swoją opinię 🙂 Ważne, żebyście wiedzieli, że oba kursy są stworzone dla osób, które chcą nauczyć się tych tematów, czyli albo nic nie umieją, albo są w nich początkujący i chcą poszerzyć swoją wiedzę. Osoby, które śmigają w tych tematach zapewne niczego nowego się nie dowiedzą 🙂

Chyba tyle… Teraz pozostaje mi tylko czekać na Wasze odpowiedzi, do czego gorąco zachęcam 🙂

Uwaga! Ten wpis zawiera tzw. linki partnerskie.

 

Rozwiązanie mikołajkowego konkursu o makrach

$
0
0

W zeszłym tygodniu ruszył na blogu konkurs o makrach. Aby wziąć w nim udział wystarczyło odpowiedzieć na pytanie:

Po co chcesz się nauczyć pisać makra? Do czego będziesz ich używać?

Nagrodą były 2 wideokursy o pisaniu makr w Excelu.

Wasze odpowiedzi bardzo mi się podobały. Przyznam, że mego-trudno było mi wybrać zwycięzcę. Podawaliście zastosowania makr, w bardzo konkretny, a czasem nawet żartobliwy sposób 🙂 Myślę, że Wasze komentarze świetnie oddają ideę makr i obrazują, do czego można je wykorzystać. Cieszę, że wzięliście udział w konkursie i bardzo Wam za to dziękuję!!! Dla wszystkich zainteresowanych przypomnę, że mam kod rabatowy -15% na zakup kursów Videopoint do końca grudnia 2016 (obejmuje produkty z ceną powyżej 30 zł). Kod to MalinowyExcel.

Ok, a teraz czas na zwycięzcę!

Oto odpowiedź, która wywarła na mnie największe wrażenie:

Chcę nauczyć się pisać makra, ponieważ…. Długo by opowiadać. Zacznę może od tego, że pracuję w szkole jako nauczycielka matematyki i zajęć komputerowych. Nie ukrywam, że nie jest to moja praca marzeń. Ciągle się coś robi,uczniowie nie słuchają i ciągle o coś pytają, lekcje, dyżury na przerwach, dodatkowe społeczne zajęcia, ciągle w biegu. Jak tylko mogę w wolnej chwili uczę się excela aby w przyszłości zostać analitykiem. Pracować spokojnie i podnosić swoje umiejętności. Mieć poczucie rozwijania się. Pisanie makr bardzo by zapunktowało i zwiększyło moje kwalifikacje. Miałam styczność z programowaniem i wiem, że nie jest to proste ale można się tego nauczyć. Makra bardzo pomagają, skracają i a przede wszystkim bardzo ułatwiają pracę. Dzięki napisaniu makra można w bardzo krótkim czasie sprawdzić lub kilka rzeczy.

 

Przysłała ją AgataU. Agata, oto puchar dla Ciebie:

malinowye-excel-winning-cup

Skontaktuję się z Tobą mailowo w sprawie nagrody.

Jeszcze raz wszystkim Wam bardzo dziękuję za udział w konkursie!

Nawiasy zamiast minusów – formatowanie niestandardowe komórki

$
0
0

Dziś będzie odpoczynek od trudnych tematów formuł tablicowych czy makr. Nie będzie zupełnie banalnie, ponieważ poruszę temat formatowania niestandardowego w komórce. Temat rzeka, można za jego pomocą dokonać cudów. Uwielbiam 🙂 Na wstępie od razu zaznaczę, że w tym artykule piszę o polskim ustawieniu systemu operacyjnego i Excela.

Dzisiaj (albo: Dzisiej, jak to mówi pani w przedszkolu mojego dziecka) pokażę Wam jak wyświetlić liczby ujemne w nawiasach, a nie ze znakiem minus. Standardowo Excel wyświetla liczby ujemne właśnie ze znakiem minus:

Tak Excel wyświetla liczby ujemne

Tak Excel wyświetla liczby ujemne

A ja chcę tak:

A tak chcę - z nawiasami zamiast minusów

Liczby ujemne z nawiasami zamiast minusów

Sprawa jest jak zwykle prosta, jak się wie, jak ją zrobić 🙂 Jest to kwestia formatowania komórki. Problem jest taki, że w okienku Formatowanie komórki (możesz je wywołać skrótem klawiszowym Ctrl + 1) nie ma takiej opcji:

Domyślne formatowanie liczbowe

Domyślne formatowanie liczbowe

Liczby ujemne możemy wyświetlić tutaj na czerwono ze znakiem minus, na czerwono bez minusa i na czarno z minusem. W takim przypadku, gdy na liście predefiniowanych formatów nie ma szukanego przez formatu, polecam go sobie napisać samodzielnie. Służy do tego kategoria Niestandardowe

Formatowanie niestandardowe

Tak jak wspomniałam na początku – jest to temat rzeka. Szczególnie polecam pobawić się datami – potrafi to rozwiązać mnóstwo codziennych problemów i ogranicza do minimum nasze wkurzanie się na Excela 😉

Ok. Do rzeczy. Formatowanie niestandardowe to nic innego jak tworzenie spersonalizowanych formatów liczbowych komórki. To wszystko to, co na liście z formatami niestandardowymi jest pod postacią ###@$^$##;0;%$%;#### 😉 Tak na prawdę każdy format komórki jest pod taką postacią, tylko, żeby nie przerazić użytkownika, Excel pokazuje to w zjadliwej postaci (takiej, jak na rysunku powyżej). Ale jak ustawicie formatowanie np. liczbowe, a potem wejdziecie do kategorii niestandardowe, to zobaczycie te znaczki. I my teraz będziemy pisać swoje formatowanie niestandardowe. Akurat znaczków nie użyjemy (uff!), ale swój kod napiszemy 🙂

W formacie niestandardowym, komórka o formacie ogólnym ma taki format (w tym artykule piszę o polskim ustawieniu systemu operacyjnego i Excela):

Standardowy

Oznacza to, że cokolwiek wpiszę do komórki, nie będzie formatowane w specjalny sposób (nie mówię o narzucaniu formatu, np. daty czy procentów). Jak wpiszę 1,2345 – dokładnie to zostanie wyświetlone, a nie np. zaokrąglone do 2 miejsc po przecinku. Jak wpiszę 0 – wyświetlę 0, a nie np. 0,00 zł. A jak wpiszę -1, to zostanie wyświetlone -1 itd.

Jedyną zmianą, jaką chcę tutaj wprowadzić, jest wyświetlanie nawiasów zamiast minusa. I tutaj niezbędne jest trochę teorii o formatowaniu niestandardowym.

Liczby dodatnie, ujemne, zero i tekst mogą być w nim inaczej formatowane. Trzeba je tylko napisać w określonej kolejności i oddzielić średnikiem:

Formatowanie niestandardowe

Formatowanie niestandardowe: kolejność

Najpierw definiujemy wygląd liczb dodatnich (np. mają być z 2 miejscami po przecinku), potem liczb ujemnych (np. nawiasy zamiast minusów), zera (ma się wyświetlać zawsze z 1 miejscem po przecinku), a potem tekstu (np. zawsze ma się wyświetlać „brak”). W naszym przykładzie chcemy, aby dodatnie wyświetlały się normalnie (czyli standardowo), ujemne w sumie też (czyli też standardowo), tylko zamiast nieszczęsnego minusa (który i tak musimy wpisać w formatowaniu niestandardowym) – wpiszemy nawiasy. Moja propozycja formatowania jest więc taka:

Standardowy;(Standardowy)

Nie powiedziałam nic o zerze i tekście, czyli te elementy będą się wyświetlały normalnie.

W okienku Formatowanie komórek format ten wygląda następująco:

Formatowanie nawiasy zamiast minusów

Formatowanie nawiasy zamiast minusów

A efekt jest taki:

Wynik - nawiasy zamiast minusów

Wynik – nawiasy zamiast minusów

No i tyle 🙂 Cała filozofia.

I wersja wideo:

 

Wesołych Świąt!

Pobieranie danych z arkusza wskazanego na liście rozwijanej

$
0
0

Dziś miało być o tabelach przestawnych, ale Arek zapytał mnie o to, jak napisać formułę, która będzie pobierała dane z arkusza wskazanego w jakiejś komórce. Temat ten chodził za mną już od dawna, więc postanowiłam przełożyć wpis o tabelach przestawnych (które lubię używać, ale nie lubię o nich mówić i pisać ;)) i zająć się tym właśnie przypadkiem. Dorzuciłam też coś od siebie, czyli wybór arkusza z listy rozwijanej – zawsze to jakiś dodatkowy bajerek 🙂

A więc dziś mamy podaną sprzedaż (ilość i wartość) handlowców w styczniu i lutym, a chcemy mieć raport, w którym zdecydujemy, z którego miesiąća dane chcemy oglądać i dodatkowo – jaka jest średnia cena sprzedanych przez handlowców produktów. W Excelu mamy więc 2 arkusze z danymi: sty i lut, oraz arkusz Raport, w którym chcemy wyświetlić dane z odpowiedniego arkusza dla wybranych osób. Tak wygląda ta sytuacja:

Struktura danych

Struktura danych

Do dzieła!

Tworzenie listy rozwijanej

Aby stworzyć listę rozwijaną w żółtej komórce I2, w arkuszu Raport, należy po pierwsze ją zaznaczyć. Następnie z menu Dane wybrać przycisk Poprawność danych. W okienku, które się pojawi trzeba wybrać, że dozwolona ma być lista z takim źródłem: Sty;Lut. Na obrazku poniżej możecie zobaczyć poprawnie uzupełnione okienko:

Lista rozwijana

Lista rozwijana

Źródło można oczywiście zdefiniować jako zakres, ja jednak na potrzeby tego ćwiczenia wybrałam metodę ręczną.

Formuła

Ok. To teraz trudniejsza sprawa, czyli formuła. Znów – wybrałam metodę z funkcją PODAJ.POZYCJĘ, choć oczywiście nie jest to konieczne. O to poprosił mnie Arek, więc jest. Zamiast tej funkcji możecie oczywiście z palca wskazać numer kolumny do wyświetlania (w funkcji WYSZUKAJ.PIONOWO). Aczkolwiek rozwiązanie z PODAJ.POZYCJĘ jest zdecydowanie bardziej uniwersalne.

Formuła w komórkach dla ilości i wartości (E3:F12) wygląda następująco:

=WYSZUKAJ.PIONOWO($C3;ADR.POŚR($I$2&"!$D$3:$F$15");PODAJ.POZYCJĘ(E$2;ADR.POŚR($I$2&"!$D$2:$F$2");0);0)

Wszystko wrzucamy do funkcji WYSZUKAJ.PIONOWO. Ma ona za zadanie wyszukanie odpowiedniej wartości dla osoby: mamy różną liczbę osób w arkuszach i ich kolejność jest inna, dlatego właśnie musimy użyć funkcji do odnalezienia wartości, a nie wyświetlić je jak leci. Więcej o funkcji WYSZUKAJ.PIONOWO możesz przeczytać tutaj.

ADR.POŚR ma za zadanie parametryzację nazwy arkusza – pobiera ją sobie z żółtej komórki I2 – tej, w której przed chwilą tworzyliśmy listę rozwijaną. Funkcja ta służy do podawania adresu zakresów za pomocą tekstu. Dzięki temu adresy te można parametryzować, a właśnie o to nam tutaj chodzi.

Na koniec funkcja PODAJ.POZYCJĘ, która sprawdza, z której kolumny WYSZUKAJ.PIONOWO ma pobierać dane. Jedyne co ona robi, to podaje numer pozycji, na której znajduje się nagłówek ilość/wartość, czyli dokładnie to, czego potrzebuje od niej WYSZUKAJ.PIONOWO.

W kreatorze funkcja ta wygląda tak:

Kreator funkcji

Kreator funkcji

Zauważcie, że Excel twierdzi, że drugi i trzeci argument są Nietrwałe. Tak ma być 🙂

Żeby było ładnie, można wszystko wrzucić do funkcji JEŻELI.BŁĄD i wyświetlić np. zero, w przypadku braku danych. Ale to już zostawiam Wam 🙂

Plik do pobrania znajdziecie tutaj:

I filmik:

 

 

 

 


Zero zamiast ujemnego podatku – alternatywa dla funkcji JEŻELI

$
0
0

Nowy rok nadszedł, a wraz z nim rozliczenia roczne podatków, wypełnianie PIT-ów itp. Pisałam już na blogu o funkcji, która może pomóc w rozliczeniu PIT-u, kiedy mamy wiele różnych PIT-ów 11, czyli uzyskujemy przychody z kilku źródeł/umów. Dziś napiszę o kolejnej takiej funkcji. Przy okazji poruszę techniczny temat, jakim jest zastępowanie liczby ujemnej zerem. W sytuacji podatkowej ma to zastosowanie, gdy z rozliczenia wyjdzie nam ujemny podatek. Takiego oczywiście nie płacimy, więc przy uzupełnianiu PIT-u będziemy wpisujemy zero. Pierwszym rozwiązaniem które się nasuwa jest funkcja JEŻELI. Oczywiście funkcja zadziała, jednak powiem Wam, że strasznie mnie ona denerwuje w tym zastosowaniu, ponieważ muszę dwa razy pisać to samo. W tym wpisie przedstawię więc alternatywne rozwiązanie: co zrobić, aby zamiast liczby ujemnej wpisać zero bez użycia funkcji JEŻELI.

Poniżej uproszczona tabelka przedstawiająca przychody, koszty, podstawę podatku oraz należny podatek. Wszędzie tam, gdzie podatek jest ujemny – chcę wyświetlić zero. Jeśli jest dodatni – chcę wyświetlić wartość tego podatku.

Alternatywa dla JEŻELI - formatka

Formatka

Wersja z JEŻELI

Uprościmy sobie sytuację i policzymy podatek po prostu jako 18% od podstawy podatku. Oczywiście jak pomnożymy liczbę ujemną przez 18% (komórka D1) – również otrzymamy liczbę ujemną. Tego nie chcemy. Czyli tutaj, zamiast liczby ujemnej chcemy w wyniku dostać zero. Zatem formuła w kolumnie Podatek, konkretnie w komórce D4, może wyglądać tak (wersja z JEŻELI):

=JEŻELI(C4<0;0;C4*$D$1)

Oczywiście otrzymamy poprawny wynik (zaokrąglimy na koniec). Tylko zobaczcie: C4 muszę napisać aż 2 razy (tutaj jeszcze pół biedy, ale jakbym miała np. jakieś obliczenie do wykonania, to już gorzej). To właśnie mnie strasznie denerwuje w tym rozwiązaniu.

Zobaczmy więc drugą opcję…

Alternatywa do JEŻELI

Alternatywą do JEŻELI jest… funkcja MAX. Prościutka, wszystkim znana MAX. Kto by pomyślał 😉 Na szkoleniach zawsze jak omawiam tę funkcję, to dla wszystkich jest prosta i oczywista. Faktycznie tak jest. Jednak mało osób używa jej w innym zastosowaniu niż proste wybieranie największej wartości z jakiegoś zakresu liczb. My oczywiście zrobimy to samo, bo do tego służy w końcu ta funkcja 🙂

Jak już wspomniałam, funkcja MAX wybiera największą wartość z danego zbioru liczb. Jak więc ma do wyboru 7 i 98, to wybierze 98. Jak ma do wyboru -9 i 16, to wybierze 16. Jak ma do wyboru -340 i 0, to wybierze zero. A jak ma do wyboru 786 i 0, to wybierze 786. Tyle. W naszej sytuacji podatkowej, możemy jej dać do wyboru zero (z palca) i wynik mnożenia 18% * podstawa podatku. Wybierze ona zawsze większą z tych wartości. Jeśli podatek będzie ujemny – zero będzie większe. Jeśli dodatni – podatek będzie większy. Cała filozofia.

Zobaczcie jak to wygląda w formule:

=MAX(0;C4*$D$1)

Wynik otrzymamy dokładnie ten sam, co w przypadku funkcji JEŻELI, ale przynajmniej nie będziemy się powtarzać, a sama funkcja zadziała szybciej (choć akurat szybkość dizałania tutaj nie jest krytyczna).

Ponieważ w wyniku dostaniemy należny podatek, wynik należy zaokrąglić do pełnych złotych matematycznie, czyli wrzucimy wszystko w funkcję ZAOKR:

=ZAOKR(MAX(0;C4*$D$1);0)

Otrzymujemy taki wynik:

Alternatywa dla JEŻELI - wynik

Wynik

Podobny trik można zastosować do wszelkich limitów np. kosztów uzyskania przychodu. Ale o tym w kolejnym wpisie.

A póki co plik do pobrania i filmik poniżej:

 

 

 

 

Alternatywa dla funkcji JEŻELI – o MIN i MAX coś jeszcze…

$
0
0

Ostatnio opisywałam użycie funkcji MIN i MAX jako alternatywę dla funkcji JEŻELI. Funkcje te działają szybciutko i pozwalają uniknąć powtarzania formuły w funkcji JEŻELI. Aczkolwiek, w porównaniu do niej, mają pewne ograniczenie, które w „normalnym” ich użyciu jest zbawienne, natomiast w tym, które opisałam ostatnio – może powodować nieoczekiwane wyniki. Dlatego właśnie o tym dziś napiszę.

Kiedy używamy funkcji MIN i MAX do sprawdzenia pewnych granic czy limitów, np. limit roczny kosztów uzyskania przychodów czy wyświetlanie zera zamiast ujemnego podatku, sytuacja jest prosta: dla podatku wybieramy zawsze większą wartość (zero lub podatek) – funkcja MAX, a dla kosztów – zawsze mniejszą (poniesiony koszt lub limit kosztów) – funkcja MIN. Schemat formuł wygląda tak:

=MAX(0; Podatek)

=MIN(LimitKUP; KUP)

To jak najbardziej działa, jednak ma pewne ograniczenie: w takiej formie nie zadziała poprawnie, gdy zmienne podatek lub KUP będą puste. Kiedy to może wystąpić? Załóżmy, że będziemy liczyli koszty uzyskania przychodu (pusty podatek raczej nie wystąpi, eh). Przyjrzyjmy się sytuacji, gdy przygotowujemy do tego uniwersalną formatkę.  Oto przykład:

MIN i MAX ograniczenie - formatka

Formatka

W żółtych komórkach w kolumnie E mamy limity KUP – z definicji zawsze uzupełnione. W kolumnie K uzupełniamy poniesione koszty – nie wszystkie musimy ponieść, ale miejsce jest przygotowane. I w ramce w białych komórkach kolumny K chcemy uzyskać koszty, które możemy sobie odliczyć od przychodu, z uwzględnieniem limitów oczywiście.

Na powyższej formatce mamy sytuację, że człowiek pracował tylko na umowę o pracę z normalnymi kosztami. Po naszej formule spodziewamy się, że formuła wyświetli nam koszty do odliczenia tylko w przypadku tej umowy, a dla pozostałych – zero. No i tutaj jest zonk. Dotychczasowa formuła, wyświetli poprawną wartość tylko dla umowy o pracę z normalnymi kosztami, czyli dla tej pozycji, dla której użytkownik podał koszty. Dla pozostałych wyświetli… wartość limitu!!! Kompletnie nie tak, jak tego chcemy.Dlaczego? Excel pominie bowiem wartość z pustych żółtych komórek Poniesione koszty. Jest na szczęście prosty sposób, aby tego uniknąć. O nim w dalszej części wpisu oczywiście.

Tak po prostu działają funkcje MIN i MAX (dotyczy obu – ja omówię na podstawie funkcji MIN). Nikt nie ma im tego za złe np. w takiej (standardowej) sytuacji: chcemy znaleźć najmniejszą wartość pensji wśród 10 pracowników, z których 2 nie ma danych:

MIN i MAX ograniczenie - standardowa sytuacja

Standardowe użycie funkcji MIN

Funkcja działa zgodnie z oczekiwaniami i pomija puste komórki. Gdyby tego nie zrobiła – najniższą wartością byłoby zero. Tutaj takie działanie funkcji jest jak najbardziej pożądane i ok.

U nas niestety tak nie jest… Zobaczcie, co będzie, gdy do białych komórek z formatki (K13:K17) wpiszę formułę:

=MIN(E4;K4)

Otrzymam taki wynik:

MIN i MAX ograniczenie - źle

Ups!

Prawidłowy wynik otrzymaliśmy jedynie w przypadku zaznaczonym na żółto na obrazku . W pozostałych – puste komórki zostały pominięte, więc funkcja dostaje de facto tylko jedną wartość do „porównania”.

Jak temu zaradzić? Trzeba spowodować, żeby Excel „zobaczył” pustą komórkę. Wow, bardzo odkrywcze 😉 Robi się to tak, że po prostu wykonujemy na komórce jakąkolwiek operację matematyczną, która nie zmienia wyniku komórki. Czyli np: *1, /1, +0, -0 albo tzw. podwójna negacja, czyli: –. Nie ma znaczenia, wybierzcie tę, która do Was najbardziej przemawia. Ja najbardziej lubię –, ponieważ jest najszybsza i najczytelniejsza.

Wracając do naszych kosztów uzyskania przychodu, nasza formuła zatem powinna wyglądać tak:

=MIN(E4;--K4)

lub np. tak:

=MIN(E4;K4*1)

Teraz Excel wykona operację matematyczną na komórce, która może być pusta. Jeśli nie będzie – ok, nic nie tracimy. Jeśli będzie – Excel ją „zobaczy” właśnie poprzez tę operację. Zobaczy ją, ponieważ coś musi z nią zrobić.

Efekt jest taki:

MIN i MAX ograniczenie - Wynik

Wynik

Tak zdecydowanie lepiej to wygląda 🙂 Mi wiele razy to już uratowało życie. Mam nadzieję, że Wam też się przyda! Jeśli tak – napiszcie proszę w komentarzu pod tym wpisem, w jakich sytuacjach okazało się to przydatne.

 
I wersja wideo:

 
 

 

 

Excel w nieruchomościach: cena za m2 na podstawie piętra i metrażu

$
0
0

Niedawno Zbyszek zapisał się na newsletter i przy okazji zadał ciekawe pytanie: jak wyświetlić wartość z określonej kolumny, na podstawie jej nazwy? Myślę, że odpowiedź na to pytanie zaciekawi wieeelu z Was, dlatego postanowiłam napisać o tym post (i nagrać filmik – pod wpisem). Przykład z życia wzięty dopasowałam do tego taki:

Excel w nieruchomościach -formatka

Formatka

Jest to tabelka pokazująca ceny za m2 mieszkań, znajdujących się na określonym piętrze budynku oraz o określonym metrażu. Metraż mamy w kolumna, piętra – w wierszach. W żółtych polach obok każdego piętra chcemy wybrać metraż z listy rozwijanej, i na tej podstawie ma nam się wyświetlić cena za m2 (w kolumnie Wartość). To jest zadanie na dziś i jednocześnie klasyczny przykład wykorzystania funkcji INDEKS i PODAJ.POZYCJĘ. Można byłoby tutaj wykorzystać też WYSZUKAJ.POZIOMO z PODAJ.POZYCJĘ (pod koniec wpisu też ją pokazuję).

Wybór metrażu – lista rozwijana

Aby stworzyć listę rozwijaną w żółtych komórkach na formatce, najpierw je zaznacz. Następnie Wejdź do menu Dane/ Poprawność danych. Pokaze się następujące okienko, w którym należy zaznaczyć to, co na obrazku poniżej:

Excel w nieruchomościach - lista rozwijana

Lista rozwijana – ustawienia

Czyli jako dozwolony wybieramy Lista, a jako zakres listy podajemy zakres nagłówków z metrażem, czyli $D$3:$H$3.

Po zatwierdzeniu OK ta łatwiejsza część zadania za nami ;). Oczywiście pamiętajcie, że lista rozwijana to głównie bajerek, aczkolwiek jeśli mamy do czynienia z użytkownikiem, to jego pomysłowość może być nieograniczona (i zazwyczaj jest;)), więc lepiej nałożyć na niego pewne ograniczenia, jakie daje nam własnie lista. User będzie mógł wybrać tylko określone wartości, a nie np. 46,89 m2…

Oczywiście wartość metrażu można równie dobrze wpisać z palca.

Przyporządkowanie ceny za m2 –  Formuła

Zabieramy się za formułę. Składa się ona z 2 funkcji: INDEKS i PODAJ POZYCJĘ. Pierwsza określa zakres, z którego mają być pobierane wartości, a druga – pozycję, na której znajduje się wartość do pobrania. Zauważcie, że wartość do pobrania „na odpowiednim piętrze”, czyli w odpowiednim wierszu, będzie dokładnie na tej samej pozycji, co wybrany przez usera metraż w nagłówku. Właśnie te 2 rzeczy wykorzystuje poniższa formuła, którą należy wpisać do kolumny Wartość:

=INDEKS(D4:H4;1;PODAJ.POZYCJĘ(B4;$D$3:$H$3;0))

Problem z nią jest tylko taki, że jak nie wpiszemy do żółtych komórek wartości, to jej wynik będzie… taki:

Excel w nieruchomościach -formuła zwracająca błędy

Formuła zwracająca błędy

Oczywiście funkcja działa poprawnie w każdym przypadku, tylko jest nieelegancka. Tam, gdzie w żółtej komórce nie ma wartości – zwraca błąd #N/D!, ponieważ nie ma zerowego metrażu, a taki właśnie każemy jej wtedy szukać. Wynik prawidłowy, ale brzydki. Poprawmy go więc za pomocą JEŻELI.BŁĄD i np. nie wyświetlajmy nic w przypadku, gdy user nie wpisze wartości w żółtą komórkę. Formuła będzie taka:

=JEŻELI.BŁĄD(INDEKS(D4:H4;1;PODAJ.POZYCJĘ(B4;$D$3:$H$3;0));"")

Efekt otrzymujemy już taki:

Elegancka formuła

Oczywiście można dyskutować, czy wyświetlać nic, czyli „”, co w rzeczywistości jest tekstem, czy np. 0. Oczywiście wszystko zależy. Jeśli nic dalej z tym nie będziemy robić, czyli nie wykorzystamy do dalszych przeliczeń – myślę, że ok jest zostawienie tego w takiej postaci. Jeśli natomiast coś dalej będziemy na tym liczyć – ja bym wolała, aby formuła wyświetlała zero, które zostanie ukryte dzięki odpowiedniemu formatowaniu niestandardowemu, które tego zera po prostu nie wyświetli. Jak zwykle wszystko zależy 🙂

Wersja formuły z WYSZUKAJ.POZIOMO

I na koniec obiecana wersja formuły. Ma ona też tę wadę, że trzeba w niej zagnieździć kolejną funkcję WIERSZ. No ale działa 🙂

=JEŻELI.BŁĄD(WYSZUKAJ.POZIOMO(B4;$D$3:$H$9;WIERSZ()-2;0);"")

Dajcie znać w komentarzach do czego jeszcze może Wam się to przydać. Domyślam się, że zastosowań tego jest dużo 🙂

 

I wersja wideo:

Transpozycja danych za pomocą funkcji

$
0
0

Nie uwierzycie, ale temat tego wpisu wymyśliłam 3 kwietnia 2015 roku. Od tego czasu pisałam na blogu o milionie innych wskazówkach, które były z różnych powodów „pilniejsze”. Powiem Wam, że mam takich pomysłów cały segregatorek formatu A6 (ze Statuą Wolności na okładce – taki akurat był w sklepie;)). Co jakiś czas dorzucam tam pomysły, ale prawda jest taka, że i tak wciąż dochodzą mi nowe, właśnie te „pilniejsze” i segregatorek sobie leży prawie zapomniany…

 

Segregatorek

To segregatorek 🙂

Ale dziś się wkurzyłam i stwierdziłam, że go odkurzę i napiszę o czymś, co tam się znajduje. Przeglądając go znalazłam ciekawy temat, o którym kiedyś (bardzo dawno) już trochę pisałam. Chodzi o temat transpozycji, czyli jak zamienić kolumny na wiersze lub odwrotnie. Używałam do tego metody kopiowania i wklejania specjalnego jako transpozycja. Metoda świetna i skuteczna, sama bardzo często jej używam. Niestety w niektórych sytuacjach jest niewystarczająca. Jej głównym założeniem jest to, że zadziała zgodnie z oczekiwaniami tylko, jeśli wkleimy wartości (na formuły nie zadziała tak, jakbyśmy tego chcieli). Można więc w uproszczeniu powiedzieć, że jest statyczna. Czasem jednak chcemy, aby taka transpozycja dokonywana była dynamicznie, czyli działa się za pomocą formuły. Z moich obserwacji wynika, że wtedy użytkownicy po prostu ręcznie wpisują w pionie odwołania do odpowiednich komórek w poziomie lub odwrotnie. Karkołomne zadanie, ale działa 🙂

Mało osób bowiem wie, że istnieje funkcja, która umie to zrobić. Ma ona pewien haczyk, więc trzeba wiedzieć jak ją zastosować, ale zobaczycie sami, że jest prościutka.

Tradycyjnie zacznijmy od formatki:

TRANSPONUJ_Formatka

Formatka

Czyli chcemy różowe poziome komórki przenieść za pomocą formuły do czarnej pionowej ramki. Użyjemy do tego funkcji, która nazywa się TRANSPONUJ. I już w tym momencie napotykamy na wspomniany wyżej haczyk ;). „Normalnie”, czyli przy wpisywaniu zwykłych formuł, po prostu piszemy formułę w pierwszej komórce z danego zakresu (czyli tutaj byłaby to B5) i kopiujemy ją do pozostałych komórek. Z funkcją TRANSPONUJ niestety nie możemy tak zrobić, ponieważ jest to funkcja tablicowa. Wymaga specjalnego traktowania. Oto one:

1. Po pierwsze zaznacz zakres, do którego chcesz przetransponować dane. Zakres ten musi mieć identyczny rozmiar, co obszar transponowany (różowy), tylko obrócony o 90 stopni. U nas będzie to zakres B5:B10 (czarna ramka). To jest haczyk 🙂

2. Wpisz formułę:

=TRANSPONUJ(B3:G3)

Śmiało możesz wskazać zakres B3:G3 myszką.

3. Formułę tę zatwierdź kombinacją klawiszy Ctrl + Shift + Enter. Dzięki temu Excel będzie wiedział, że jest to formuła tablicowa.

I to tyle. Cała filozofia. Efekt dostaniemy taki:

TRANSPONUJ_Wynik

Wynik

W odróżnieniu od kopiowania i wklejania specjalnego – ta metoda jest dynamiczna, czyli cokolwiek zmienimy w różowym zakresie – zmieni się też w czarnej ramce.

Oczywiście można byłoby się czepiać, że fakt zaznaczania komórek, do których wpisujemy formułę jest dość uciążliwy, ale niestety that’s the way it is. Tak działają formuły tablicowe i jest to nie do przeskoczenia… Od razu też podpowiem, że jeśli chcielibyście jakkolwiek edytować tę formułę, to również trzeba zaznaczyć cały zakres, w którym ona się znajduje (czyli czaną ramkę) i dopiero wtedy edytować. Zmiany również należy zatwierdzić kombinacją klawiszy Ctrl + Shift + Enter. Jeśli bowiem spróbujecie edytować formułę bez zaznaczenia wszystkich komórek, dostaniecie taki komunikat:

TRANSPONUJ_Komunikat: Zmiana części tablicy nie jest możliwa

Komunikat

Strasznie to irytujące z jednej strony, ale z drugiej… ma kilka zalet, np. taką, że większość użytkowników nie będzie umiała nam tej formuły zepsuć 😉 Chyba że skasuje wszystko z czarnej ramki… Formuły tablicowe – temat rzeka!

Jestem ciekawa ile razy Wam by się to już przydało? Zachęcam do komentowania i dzielenia się doświadczeniami 🙂

 

Funkcja PPRZESUNIĘCIE pomaga liczyć podsumy

$
0
0

Ostatnio napisał do mnie Radek z ciekawym pytaniem. Miał o bardzo dużą, dość specyficznie zbudowaną tabelę, w której chciał zastosować podsumowania części danych (coś a la sumy częściowe). Na koniec chciał mieć sumę wszystkiego. Przyznam, żę rozwiązanie do oczywistych nie należy i jest bardzo ciekawe, bo zawiera funkcję PRZESUNIĘCIE…

Formatka wygląda tak:

Przesunięcie formatka

Formatka

W żółtej komórce F2 ma się znaleźć suma wszystkich wartości, a te wartości mają być takie:

  1. tam, gdzie są szare pola, a w kolumnie B jednostką jest „ryczałt”, należy podsumować wszystkie dane pod tym ryczałtem (aż do następnego ryczałtu),
  2. tam,gdzie jednostka jest inna niż „ryczałt”, należy pomnożyć wartości z kolumn C i D.

W kolumnie E są formuły wstawione ręcznie w odpowiednie komórki, które sumują tam, gdzie jest „ryczałt”, a w pozostałe komórki wstawione jest proste mnożenie (plik z rozwiązaniem jest do pobrania pod wpisem). Ponieważ jest to mrówcza praca, to w całym ćwiczeniu chodzi o to, aby zrobić to za pomocą jednej formuły. Do dzieła 🙂

Formuła z funkcją PRZESUNIĘCIE

Nasze zadanie jest więc takie: w żółtych komórkach F4:F21 należy wpisać jedną formułę taką, która w przypadku napotkania jednostki = „ryczałt” podsumuje wartości poniżej, do kolejnego słowa „ryczałt”. W innym przypadku pomnoży wartości z komórek obok (kolumny C i D).

Formuła będzie dość skomplikowana. Wykorzystam w niej aż 6 funkcji: JEŻELI,  SUMA, PRZESUNIĘCIE, JEŻELI.BŁĄD, PODAJ.POZYCJĘ i ILE.NIEPUSTYCH.

Funkcja JEŻELI sprawdzi, czy jednostka = „ryczałt”. Jeśli tak – będzie sumowała komórki poniżej, jeśli nie – wymnoży wartości z komórek obok. Do określenia zakresu komórek „poniżej” posłużą funkcje PRZESUNIĘCIE, JEŻELI.BŁĄD, PODAJ.POZYCJĘ i ILE.NIEPUSTYCH. PRZESUNIĘCIE zwróci nam adres zakresu. Zakres ten będzie ustalony dzięki 3 pozostałym funkcjom.

Zobaczcie formułę:

=JEŻELI(B4="ryczałt";SUMA(PRZESUNIĘCIE(F5;0;0;JEŻELI.BŁĄD(PODAJ.POZYCJĘ("ryczałt";B5:$B$21;0)-1;ILE.NIEPUSTYCH(B5:$B$21));1));C4*D4)));C4*D4)

Najtrudniej jest ustalić tutaj wysokość zakresu sumowania, czyli czwarty argument funkcji PRZESUNIĘCIE. Wysokość ta jest to liczba komórek pod wierszem, w którym aktualnie jesteśmy, do najbliższego wystąpienia kolejnego „ryczałtu”. Najłatwiej jest to określić funkcją PODAJ.POZYCJĘ, która ma sprawdzić, gdzie jest „ryczałt” w zakresie od komórki poniżej wiersza z formułą, do końca zakresu. Funkcja PODAJ.POZYCJĘ zwróci pozycję pierwszego napotkanego „ryczałtu”, czyli dokładnie to, o co nam chodzi. A ponieważ chcemy, aby wysokość zakresu sumowania kończyła się tuż przed napotkaniem słowa „ryczałt”, od wyniku PODAJ.POZYCJĘ odejmujemy 1.

I tak naprawdę to nam prawie rozwiązuje problem. Niestety nie zakłada opcji, że zakres się kiedyś skończy i to nie słowem „ryczałt”. W takiej sytuacji, PODAJ.POZYCJĘ zwróci błąd. Żeby się przed tym zabezpieczyć – wrzucamy wszystko do funkcji JEŻELI.BŁĄD i jako jej drugi argument, czyli co ma się stać w przypadku błędu, wrzucamy funkcję ILE.NIEPUSTYCH, która po prostu policzy wysokość zakresu, jako liczbę niepustych komórek z jednostkami. Dokładnie to w takim przypadku będzie wysokość sumowanego zakresu.

Mega-formułą, ale działa 🙂

Małego komentarza wymaga również dynamiczny zakres B5:$B$21. Jest on po to, aby ustalać zakres sumowania: ma on się zaczynać zawsze pod wierszem, w którym jest formuła. Dynamikę tego zakresu osiągamy zwykłym adresowaniem.  Mówimy Excelowi, że ma zmieniać pierwszą komórkę zakresu (adres względny= brak dolarów), ale ma zostawić w spokoju ostatnią (adres bezwzględny = 2 dolary). Dzięki temu uzyskujemy efekt dynamicznego zakresu.

Dobrze widać to na obrazkach (fioletowy zakres) – zakres się zmniejsza wraz ze schodzeniem formuły w dół:

Przesunięcie: Dynamiczny zakres 1

Dynamiczny zakres 1

Przesunięcie: Dynamiczny zakres 1

Dynamiczny zakres 2

Formuła licząca TOTAL

Na koniec już najłatwiejsze, czyli podsumowanie wszystkiego. To zrobimy już zwykłą funkcją SUMA.JEŻELI. Kryterium sumowania, będzie oczywiście słowo „ryczałt”. Formuła w komórce F2 wygląda więc tak:

=SUMA.JEŻELI(B4:B21;"ryczałt";F4:F21)

Nic tutaj nie trzeba blokować, ponieważ formuła ta jest tylko w tym jednym miejscu.

A oto efekt wszystkiego:

MalinowyExcel Przesunięcie Wynik

Wynik

Mam nadzieję, że podany przykład okaże się przydatny w tej, czy zbliżonej formie. Zachęcam też do udostępnienia tego wpisu znajomym, za co będę bardzo wdzięczna.

 

 

Viewing all 291 articles
Browse latest View live