Výuka a školení Excelu Výuka a školení Excelu Výuka a školení Excelu
Výuka a školení Excelu Výuka a školení Excelu

středa 1. října 2014

Náhodné zařazení do výběru

Příklad

Při vědeckém zkoumání někdy potřebujeme vytvořit výběr, který je zcela objektivně náhodný.
Jak to udělat v Excelu?
Představte si, že máte patnáct položek (v našem případě objekty od jedné do patnácti) a potřebujeme zcela náhodně vybrat tři.

Návod

Nejprve každé z těchto položek přiřadíme náhodnou hodnotu pomocí funkce NÁH.ČÍSLO.

Pak do dalšího sloupce určíme pomocí funkce RANK pořadí tohoto náhodného čísla a rovnou toto pořadí porovnáme pomocí funkce KDYŽ s počtem objektů, které chceme do výběru zařadit. Např. takto:
=KDYŽ(RANK(B2;B:B)<=$A$19;"vybrat";"nevybrat")
 
Roztáhneme a u každého objektu vidíme, jestli je do výběru zařazený nebo není. Po stisku klávesy F9 se tento výběr určí vždy znovu.


pondělí 29. září 2014

Excel a nelineární regrese

V Excelu existuje řada způsobů, jak pracovat s lineární regresí - věnuje se jim tento článek.
Lineární regrese je vztah, kdy závislost dvou proměnných je v grafu vyjádřena přímkou, jinými slovy y = a * x.
Problém ale je, když je závislost nelineární. Tedy např. logaritmická, exponenciální atd.
Je sice možné, podobně jako u lineární regrese, použít doplnění křivky a rovnice do grafu, ale to není příliš přesné a pokrývá to jen vybrané typy závislostí.
V tomto článku si ukážeme, jak vypočítat koeficienty nelineárních závislostí. Ten postup by měl fungovat víceméně na většinu běžných typů závislostí, my si jej ukážeme na závislosti logaritmické.

Příklad

Ve firmě sledují závislost tržeb na investicích do reklamy. Data za dosavadní období jsou popsaná v této tabulce:

a v tomto grafu:

Je patrné, že závislost je v zásadě logaritmická. Tedy že tržby sice rostou s investicemi do reklamy, ale tento růst je pomalejší a pomalejší a od určité úrovně už investice do reklamy nemají na tržby téměř žádný vliv.
Logaritmická závislost je běžně popsaná rovnicí:
y = a * ln(x) + b
V našem případě jsou y tržby a x investice do reklamy. Abychom popsali závislost tržeb na investicích do reklamy, je nutné zjistit hodnoty a a b.
Soubor s daty a nastaveným řešitelem je ke stažení tady.

Návod

Na nalezení koeficientů použijeme nástroj Řešitel. Necháme ho hledat koeficienty a a b tak, aby byl co nejmenší rozdíl mezi hodnotami spočítanými regresní funkcí a skutečnými hodnotami.Tedy aby křivka funkce byla co nejblíže bodům v grafu.
Mimo tabulku si připravíme místo pro koeficienty a a b (žluté buňky) a z nich vypočteme pomocí logaritmické funkce nový sloupec. Ten je zatím prázdný, ale až budou vyplněné hodnoty ve žlutých buňkách, bude ukazovat odpovídající hodnoty.

Do nového sloupce pak spočteme rozdíl skutečných a dopočtených hodnot.

Tento rozdíl za všechny hodnoty chceme minimalizovat - tak, aby nalezená funkce byla co nejblíž bodům ze zadání.. Do nové buňky tedy sečteme druhé mocniny rozdílů.

A jdeme nastavit Řešitele. Je to jednoduché. Minimalizujeme součet mocnin rozdílů tím, že měníme žluté buňky, a nastavíme metodu řešení GRG Nonlinear.
Klikneme na Solve a je hotovo.

Ve žlutých buňkách jsou teď koeficienty rovnice.
O tom, že jsou správné, se můžeme přesvědčit, když do grafu zahrneme původní i dopočítané hodnoty. Vidíme, že dopočítané červené body jsou přibližně na stejné křivce jako skutečné modré.


  • Tento výsledek má zcela praktické využití. Pokud bych chtěl v budoucím období investovat do reklamy např. 180, mohu očekávat tržby ve výši 799 * ln (180) + 2408, tedy 1742.
  • Se znalostí této závislosti a se znalostí podílu zisku na tržbách by teď už bylo snadné určit, která velikost investic do reklamy maximalizuje zisk firmy.
  • Je dobré uvědomit si, že hodnota v buňce D12, součet čtverců rozdílů, je zajímavá nejen pro řešitele. Umožnila by totiž porovnat, jak moc vhodné jsou různé typy závislostí. Nejlepší bude zřejmě ta závislost, která bude mít v této buňce nejnižší hodnotu.
  • Koeficienty, které jsme v tomto případě zjistili řešitelem, lze získat i kombinací funkcí.
    Koeficient "a" zjistíme vzorcem =INDEX(LINREGRESE(B2:B11;LN(A2:A11));1;2)
    Koeficient "b" zjistíme vzorcem =INDEX(LINREGRESE(B2:B11;LN(A2:A11));1)
    Je ale zajímavé, že funkce nám dá sice podobné výsledky jako řešitel, ale přeci jen o trošku méně přesné. Přeci jen je to ale přesnější než to, co se ukáže po přidání spojnice v grafu.
  • Pokud bychom chtěli najít koeficient determinace (to, co se u grafu zobrazí jako R2), použijeme vzorec =RKQ(B2:B11;LN(A2:A11))
Soubor s daty a nastaveným řešitelem je ke stažení tady.

TRIM / PROČISTIT

Nadbytečné mezery jsou věc, která umí jít v Excelu docela pěkně na nervy.
Mezery před texty, vícenásobné mezery mezi texty a hlavně mezery za texty, které nejsou vidět.

Příklad

Nám je např. zřejmé, že slova "Ústí nad Labem" a "    Ústí   nad Labem   " označují stejné město. Excel to ale jako jednu hodnotu samozřejmě nerozezná - kvůli mezerám.

Návod

Naštěstí existuje funkce TRIM / PROČISTIT, která provádí následující tři kroky:
  • Odstraní všechny mezery na začátku textu
  • Odstraní všechny mezery na konci textu
  • Pokud se mezi částmi textu vyskytuje několik mezer za sebou, jsou změněny na jednu mezeru.
Z "    Ústí   nad Labem   " tak funkce udělá spořádané "Ústí nad Labem".
Funkce má jen jeden parametr - text, který "čistím". Zápis je tedy velmi jednoduchý:
=TRIM(A1)




neděle 28. září 2014

Pokladna v Excelu

Příklad

Na kurzech pro začátečníky občas řešíme, jak v Excelu vytvořit něco jako pokladní knihu, přehled položek na účtu, skladovou evidenci... zkrátka tabulku s příjmy, výdaji a automaticky spočteným aktuálním stavem.

Návod 

Není nic snadnějšího. Data, příjmy a výdaje se prostě vypisují. Jde o výpočet stavu. Do první buňky stavu napíšu:
  • =B2
    protože první řádek stavu je vlastně počáteční stav.

Do další buňky pak napíšu a dolů roztáhnu:
  • =D2+B3-C3
    protože každý další řádek se spočte tak, že se k řádku nad buňkou připočte příjem a odečte se výdej. Protože v praxi bude vždy v řádku zapsaný jen výdej nebo příjem, provede se buď přičtení nebo odečtení.


sobota 27. září 2014

Funkce NEPŘÍMÝ.ODKAZ / INDIRECT

Funkce NEPŘÍMÝ.ODKAZ mění textový řetězec na odkaz. A to buď na odkaz definovaný souřadnicemi, nebo na odkaz definovaný názvem oblasti.

Definice souřadnic odkazu

Například zde:

Chci, aby uživatel v modrých buňkách zadával souřadnice buňky, ze které se má získat hodnota. V šedé buňce je pak vzoreček:
=NEPŘÍMÝ.ODKAZ(CONCATENATE(F1;F2))
Tedy nejprve pomocí funkce CONCATENATE získám z textů "B" a "3" text "B3". Ten pak funkce NEPŘÍMÝ.ODKAZ převede na odkaz, a ve výsledku je osmička - hodnota z buňky B3.

Definice názvu oblasti

Funkce NEPŘÍMÝ.ODKAZ funguje i když je odkaz definovaný názvem oblasti.
Například v tomto příkladu, si mohu dvě oblasti čísel pojmenovat "modrá" a "zelená".

Pak je možné do růžové buňky napsat název oblasti a pomocí funkce suma vysčítat tu oblast, která je zapsaná.

Oba způsoby použití funkce NEPŘÍMÝ.ODKAZ jsem se snažil vysvětlit tak, aby bylo jasné, jak to funguje. Na druhou stranu - osobně jsem je myslím nikdy nepoužil a nezdá se mi to úplně praktické. Existuje ale jeden velmi zajímavý způsob použití funkce NEPŘÍMÝ.ODKAZ - a to pro vytváření kaskádových vybíracích menu.

pátek 26. září 2014

Generování náhodných čísel s funkcí RAND / NÁHČÍSLO

Příklad

Potřebuji vygenerovat zcela náhodné číslo mezi nulou a jedničkou - například pro nějakou simulační úlohu.

Návod

Použiji funkci NÁHČÍSLO, anglicky RAND.
Funkce má zápis:
  • =NÁHČÍSLO()

Platí, že:

  • Čísla generovaná funkcí NÁHČÍSLO jsou změněna při každém přepočítání sešitu
  • Náhodné číslo má patnáct desetinných míst - tedy pracuje s přesností miliardtin milionů.
  • Někdy se víc než funkce náhodné číslo hodí funkce RANDBETWEEN, která generuje celá čísla v zadaném rozsahu
  • Čísla jsou generovaná v rovnoměrném rozložení - neměli bychom je tedy v simulačních metodách používat pro simulaci veličin popsaných např. normálním rozložením.

čtvrtek 25. září 2014

Zajímavost s porovnáváním číselných kódů

V tabulce máte tato dvě čísla naformátovaná jako text:
  • 1111111111111119999
  • 1111111111111110000
Myslíte, že tato čísla nejsou stejná? Excel je jiného názoru.


Vida, Excel obě čísla vyhodnotil jako duplicitní.
Stejně se zachová třeba funkce COUNTIF (nebo SUMIF) - tvrdí, že první číslo je v tabulce použité dvakrát.


To už nám může způsobit docela problém - protože funkce v našem případě bude házet naprosto nesmyslné hodnoty a je těžké si toho všimnou.
Je zajímavé, že např. funkce SVYHLEDAT/VLOOKUP nebo POZVYHLEDAT/MATCH fungují správně (na obrázku MATCH ukazuje, že hledané je na druhé pozici)....


...a současně přímé porovnání výsledků také správně ukáže, že hodnoty jsou odlišné.


Pro COUNTIF Excel očividně sleduje jen prvních 15 znaků (pokud se čísla liší na prvních 15 znacích, tak se problém neprojeví). 
Uvedený problém vypadá jako maličkost, ale např. u kódů zboží, kde se běžně jedná o dlouhé číselné řetězce, může vést k naprosto nemyslným výsledkům - o to zákeřnějším, že se projeví jen na některých položkách.
Náprava je přitom snadná - stačí vytvořit a pro porovnání použít (třeba funkcí CONCATENATE) pomocný sloupec, kde budou čísla změněna na:
  • 1111111111111119999x
  • 1111111111111110000x
a vše funguje tak jak má.