Excel je výkonný nástroj pro zpracování dat. Patří do skupiny aplikací nazývané "Tabulkové procesory" neboli "Spreadsheety".
Historie spreadsheetů je docela stará. Vznikly cca na přelomu sedmdesátých a osmdesátých let. Impulsem k jejich vytvoření bylo to, že uživatele přestalo bavit vždy přepočítávat celý příklad ve chvíli, kdy se změnil jeden ze vstupů - tak, jako v ruce nebo na kalkulačce. Když zjistíte, že jste někde udělali chybu, musíte přepočítat všechno znovu.
Tak tomu skutečně dřív bývalo, že se ty příklady musely přepočítávat. Pak se ale dalo pár chytrých hlav dohromady a řekli: Dost! A není náhodou, že těch pár chytrých hlav se našlo v Applu, který v té době hýbal světem počítačů.
Od té doby z původního VisiCalcu vznikla řada aplikací, z nichž aktuálně nejrozšířenější je s velkým náskokem Excel.
A i když Excel už dnes vypadá úplně jinak než jeho pradědečci a obsahuje mnohonásobně více zajímavých funkcí, z hlediska dat funguje pořád na podobném principu. Jinými slovy - data ukládá do separátních tabulek, které spolu nejsou propojené. Databáze je tak tvořena v zásadě jen jednou tabulkou.
Tím se principiálně odlišuje od relačních databází. Tam jsou data naopak uložena do většího množství tabulek. Mezi nejznámější software pro správu relačních databází patří např. Oracle, MS SQL, DB2, ale také Access.
Teď ale dochází k docela zajímavé změně. Excel se učí pracovat i s relačními daty, a uživatelům tím dává do ruky zásadně jinou a novou funkcionalitu.
Nějaké náznaky už byly ve starších verzích (za jeden z takových náznaků se dá považovat i funkce VLOOKUP / SVYHLEDAT, která více tabulek propojuje), ale větší změna přišla až s doplňkem PowerPivot pro Excel 2010 a Excel 2013.
V tomto doplňku můžeme s relačními databázemi pracovat docela zajímavě (byť zdaleka ne tak dobře jako ve specializovaných softwarech pro správu relačních databází).
V tomto článku chci ale ukázat jinou možnost relačního propojení tabulek. Trochu méně funkční, ale zato jednodušší, a navíc funkční i v běžných verzích MS Office 2013.
Hotové řešení ke stažení tady
Naším úkolem bude vytvořit jednoduchý report o tom, ze kterých oblastí máme kolik zákazníků.
Jinými slovy potřebuji z těchto dat:
Vytvořit tuto kontingenční tabulku:
Problém je samozřejmě v tom, že zatímco počty lidí jsou v první tabulce, názvy oblastí jsou v té druhé. Čili potřebuji do jedné kontingenční tabulky spojit dvě tabulky se zdrojovými daty.
Začnu tím, že si tabulky pojmenuji. První tabulku označím a jdu na Vložení / Tabulka. Potvrdím.
Ze skupiny buněk se teď stane tabulka tak, jak ji chápe Excel - a změní barvu na modrou a bílou.
Jdu na Nástroje tabulky / Návrh a změním Název tabulky např. na Lidé.
To samé provedu i s druhou tabulku, pojmenuji ji např. Oblasti.
A teď už se mohu pustit do samotného propojení. Jdu na Data / Relace / Nová...
Teď nastavím, které tabulky a jak jsou propojené.
V levém sloupci nastavím, o které tabulky se jedná. Volba je jednoduchá, tabulky mám stejně jen dvě - a jmenují se tak, jak jsem si je sám v předchozích krocích pojmenoval. V pravém sloupci pak nastavím sloupce, přes které jsou tabulky propojené. Tedy Číslo oblasti (z tabulky Lidé) a Oblast (z tabulky Oblasti). Jedná se vlastně o dva sloupce, které obsahují vzájemně odpovídající hodnoty - a přes které jsou tabulky de facto propojené.
Kliknu na OK a Zavřít.
Teď kliknu do jedné z tabulek (třeba do té první) a standardně z ní vytvořím běžnou kontingenční tabulku.
Kliknu na Další tabulky, pokud se objeví dotaz tak dám Ano.
A vida, do kontingenční tabulky už mohu vkládat pole z obou původních tabulek. A díky tomu, že jsem předtím vytvořil relaci, to dává logicky smysl.
Takto tedy vypadá výsledek:
Pokud Vás napadlo, jestli se někde dají zobrazit "zdrojová data" pro výslednou kontingenční tabulku (tedy propojené tabulky, jakoby přes SVYHLEDAT nebo přes jednoduchý SQL dotaz), tak se osobně domnívám, že to nejde, ale jistý si tím nejsem. Pokud někdo víte, jak na to, napište do diskuse.
Historie spreadsheetů je docela stará. Vznikly cca na přelomu sedmdesátých a osmdesátých let. Impulsem k jejich vytvoření bylo to, že uživatele přestalo bavit vždy přepočítávat celý příklad ve chvíli, kdy se změnil jeden ze vstupů - tak, jako v ruce nebo na kalkulačce. Když zjistíte, že jste někde udělali chybu, musíte přepočítat všechno znovu.
Tak tomu skutečně dřív bývalo, že se ty příklady musely přepočítávat. Pak se ale dalo pár chytrých hlav dohromady a řekli: Dost! A není náhodou, že těch pár chytrých hlav se našlo v Applu, který v té době hýbal světem počítačů.
Od té doby z původního VisiCalcu vznikla řada aplikací, z nichž aktuálně nejrozšířenější je s velkým náskokem Excel.
A i když Excel už dnes vypadá úplně jinak než jeho pradědečci a obsahuje mnohonásobně více zajímavých funkcí, z hlediska dat funguje pořád na podobném principu. Jinými slovy - data ukládá do separátních tabulek, které spolu nejsou propojené. Databáze je tak tvořena v zásadě jen jednou tabulkou.
Tím se principiálně odlišuje od relačních databází. Tam jsou data naopak uložena do většího množství tabulek. Mezi nejznámější software pro správu relačních databází patří např. Oracle, MS SQL, DB2, ale také Access.
Teď ale dochází k docela zajímavé změně. Excel se učí pracovat i s relačními daty, a uživatelům tím dává do ruky zásadně jinou a novou funkcionalitu.
Nějaké náznaky už byly ve starších verzích (za jeden z takových náznaků se dá považovat i funkce VLOOKUP / SVYHLEDAT, která více tabulek propojuje), ale větší změna přišla až s doplňkem PowerPivot pro Excel 2010 a Excel 2013.
V tomto doplňku můžeme s relačními databázemi pracovat docela zajímavě (byť zdaleka ne tak dobře jako ve specializovaných softwarech pro správu relačních databází).
V tomto článku chci ale ukázat jinou možnost relačního propojení tabulek. Trochu méně funkční, ale zato jednodušší, a navíc funkční i v běžných verzích MS Office 2013.
Příklad
Původní data pro příklad ke stažení tadyHotové řešení ke stažení tady
Naším úkolem bude vytvořit jednoduchý report o tom, ze kterých oblastí máme kolik zákazníků.
Jinými slovy potřebuji z těchto dat:
Vytvořit tuto kontingenční tabulku:
Problém je samozřejmě v tom, že zatímco počty lidí jsou v první tabulce, názvy oblastí jsou v té druhé. Čili potřebuji do jedné kontingenční tabulky spojit dvě tabulky se zdrojovými daty.
Začnu tím, že si tabulky pojmenuji. První tabulku označím a jdu na Vložení / Tabulka. Potvrdím.
Ze skupiny buněk se teď stane tabulka tak, jak ji chápe Excel - a změní barvu na modrou a bílou.
Jdu na Nástroje tabulky / Návrh a změním Název tabulky např. na Lidé.
To samé provedu i s druhou tabulku, pojmenuji ji např. Oblasti.
A teď už se mohu pustit do samotného propojení. Jdu na Data / Relace / Nová...
Teď nastavím, které tabulky a jak jsou propojené.
V levém sloupci nastavím, o které tabulky se jedná. Volba je jednoduchá, tabulky mám stejně jen dvě - a jmenují se tak, jak jsem si je sám v předchozích krocích pojmenoval. V pravém sloupci pak nastavím sloupce, přes které jsou tabulky propojené. Tedy Číslo oblasti (z tabulky Lidé) a Oblast (z tabulky Oblasti). Jedná se vlastně o dva sloupce, které obsahují vzájemně odpovídající hodnoty - a přes které jsou tabulky de facto propojené.
Kliknu na OK a Zavřít.
Teď kliknu do jedné z tabulek (třeba do té první) a standardně z ní vytvořím běžnou kontingenční tabulku.
Kliknu na Další tabulky, pokud se objeví dotaz tak dám Ano.
A vida, do kontingenční tabulky už mohu vkládat pole z obou původních tabulek. A díky tomu, že jsem předtím vytvořil relaci, to dává logicky smysl.
Takto tedy vypadá výsledek:
Pokud Vás napadlo, jestli se někde dají zobrazit "zdrojová data" pro výslednou kontingenční tabulku (tedy propojené tabulky, jakoby přes SVYHLEDAT nebo přes jednoduchý SQL dotaz), tak se osobně domnívám, že to nejde, ale jistý si tím nejsem. Pokud někdo víte, jak na to, napište do diskuse.
Dobrý den,
OdpovědětVymazatzajímalo by mě, jak by se vytvořila výsledná tabulka spojením dvou ukázkových tabulek, pomocí relací, bez tvorby souhrnů kontingenční tabulkou, tj. jak bych z druhé tabulky do první doplnil názvy oblastí. Často se stává, že je třeba propojit tabulky pouze za účelem doplnění hodnot z jedné do druhé a není potřeba dělat žádný souhrn.
E.T.
VLOOKUP (SVYHLEDAT)
OdpovědětVymazatSVYHLEDAT znám a používám. Přesto děkuji za radu. Kdyby tak vznikl hybrid mezi Excelem a Accessem...
OdpovědětVymazatMá úcta.
E.T.
Já myslím že to spojit nejde - viz poslední odstavec článku. Ale mohu se mýlit. Pokud byste někdy vykoumal jak na to, dejte vědět.
OdpovědětVymazatHezký den,
J.