Excel Asistent Magazín 04/2003



Podobné dokumenty
Obsah. Obsah. Úvod Makra v Excelu Nahrávání maker První setkání s editorem jazyka Visual Basic... 31

29 Evidence smluv. Popis modulu. Záložka Evidence smluv

Operace nad celými tabulkami

Seznámení žáků s pojmem makra, možnosti využití, praktické vytvoření makra.

téma: Formuláře v MS Access

NÁVRHOVÝ PROGRAM VÝMĚNÍKŮ TEPLA FIRMY SECESPOL CAIRO PŘÍRUČKA UŽIVATELE

Zadávání tiskových zakázek prostřednictvím JDF a Adobe Acrobat Professional

Algoritmizace a programování

ČÁST PÁTÁ POZEMKY V KATASTRU NEMOVITOSTÍ

Poukázky v obálkách. MOJESODEXO.CZ - Poukázky v obálkách Uživatelská příručka MOJESODEXO.CZ. Uživatelská příručka. Strana 1 / 1. Verze aplikace: 1.4.

170/2010 Sb. VYHLÁŠKA. ze dne 21. května 2010

Modul Řízení objednávek.

Kočí, R.: Účelové pozemní komunikace a jejich právní ochrana Leges Praha, 2011

Android Elizabeth. Verze: 1.3

POUŽÍVÁME TABULKY A GRAFY VE VÝUCE

Manuál Kentico CMSDesk pro KDU-ČSL

DATABÁZE DŮLEŽITÉ: Před načtením nové databáze do vaší databáze si prosím přečtěte následující informace, které vám umožní:

Úprava tabulek v MS Word. Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T. G. Masaryka, Kostelec nad Orlicí

STANDARD 3. JEDNÁNÍ SE ZÁJEMCEM (ŽADATELEM) O SOCIÁLNÍ SLUŽBU

TIP: Pro vložení konce stránky můžete použít klávesovou zkratku CTRL + Enter.

Novinky verzí SKLADNÍK 4.24 a 4.25

MOBILNÍ KOMUNIKACE STRUKTURA GSM SÍTĚ

TVORBA MULTIMEDIÁLNÍCH PREZENTACÍ. Mgr. Jan Straka

Ovoce do škol Příručka pro žadatele

Příloha č. 54. Specifikace hromadné aktualizace SMS-KLAS

WEBMAP Mapový server PŘÍRUČKA PRO WWW UŽIVATELE Hydrosoft Veleslavín, s.r.o., U Sadu 13, Praha 6

Zadání. Založení projektu

Skupina Testování obsahuje následující moduly: Síla a rozsah výběru, Testy a Kontingenční tabulka.

Podrobný postup pro doplnění Žádosti o dotaci prostřednictvím Portálu Farmáře. 1. kolo příjmu žádostí Programu rozvoje venkova ( )

INTERNETOVÝ TRH S POHLEDÁVKAMI. Uživatelská příručka

Co najdete v ASPI? (pro uživatele SVI FSE UJEP)

Uživatelská dokumentace

Příručka pro zadavatele E-ZAK krok za krokem

Microsoft Office Project 2003 Úkoly projektu 1. Začátek práce na projektu 1.1 Nastavení data projektu Plánovat od Datum zahájení Datum dokončení

4 Část II Základy práce v systému. 6 Část III Úvodní obrazovka. 8 Část IV Práce s přehledy. 13 Část V Kontakty. 19 Část VI Operativa

Programový komplet pro evidence provozu jídelny v modul Sklad Sviták Bechyně Ladislav Sviták hotline: 608/

STÍRÁNÍ NEČISTOT, OLEJŮ A EMULZÍ Z KOVOVÝCH PÁSŮ VE VÁLCOVNÁCH ZA STUDENA

1 - Prostředí programu WORD 2007

Jak jednat. se stavebním úřadem. Michal Lalík. e s. stavebnímu zákonu z praxe

POKYNY Č. 45. Část I Zápis nové stavby jako samostatné věci

Česká zemědělská univerzita v Praze Fakulta provozně ekonomická. Obor veřejná správa a regionální rozvoj. Diplomová práce

Jak pracovat s kalkulačním programem HELUZ komín

Návod k použití aplikace MARKETINGOVÉ PRŮZKUMY.CZ

Odůvodnění veřejné zakázky. Přemístění odbavení cestujících do nového terminálu Jana Kašpara výběr generálního dodavatele stavby

Názory na bankovní úvěry

Výsledky přijímacích zkoušek

DOTWALKER NAVIGACE PRO NEVIDOMÉ A SLABOZRAKÉ

Metodika kontroly naplněnosti pracovních míst

Vyplňte API klíč, který si vygenerujete v Nastavení obchodu v profilu Uloženky v části Nastavit klíč pro API.

Autodesk Inventor 8 vysunutí

Analýza oběžného kola

Testovací aplikace Matematika není věda

Manuál pro WebRSD. verze 2.0 z

METODIKA PRO NÁVRH TEPELNÉHO ČERPADLA SYSTÉMU VZDUCH-VODA

Memoria Mundi Series Bohemica z trezoru na Internet

ISA 402 ZVAŽOVANÉ SKUTEČNOSTI TÝKAJÍCÍ SE SUBJEKTŮ VYUŽÍVAJÍCÍCH SLUŽEB SERVISNÍCH ORGANIZACÍ

DAŇOVÉ AKTULITY Daň z přidané hodnoty

Společné stanovisko GFŘ a MZ ke změně sazeb DPH na zdravotnické prostředky od

Principy soužití menšiny s většinovou společností

WEBDISPEČINK NA MOBILNÍCH ZAŘÍZENÍCH PŘÍRUČKA PRO WD MOBILE

10 je 0,1; nebo taky, že 256

4.5.1 Magnety, magnetické pole

Pomocník diabetika Uživatelská příručka

Obsah. Podrobná uživatelská příručka

Vydání občanského průkazu

Moderní technologie ve studiu aplikované fyziky CZ.1.07/2.2.00/ Reálná čísla

Pravidla o poskytování a rozúčtování plnění nezbytných při užívání bytových a nebytových jednotek v domech s byty.

4. Připoutejte se, začínáme!

Návod k používání registračního systému ČSLH

Obsah. Úvodem 11 Komu je kniha určena 12 Co v knize najdete 12

Pokyn D Sdělení Ministerstva financí k rozsahu dokumentace způsobu tvorby cen mezi spojenými osobami

MATEMATIKA A BYZNYS. Finanční řízení firmy. Příjmení: Rajská Jméno: Ivana

Územní plánování, charakter intravilánu a osídlení obce Nosislav

Slovní úlohy vedoucí na lineární rovnice I

HD satelitní přijímač SLOTH Opticum Ultra plus

Manuál uživatele čipové karty s certifikátem

2002, str Jírová, H.: Situace na trhu práce v České republice. Transformace české ekonomiky. Praha, LINDE,

Mikromarz. CharGraph. Programovatelný výpočtový měřič fyzikálních veličin. Panel Version. Stručná charakteristika:

INFORMATIKA V CHOVECH PRASAT

A. PODÍL JEDNOTLIVÝCH DRUHŮ DOPRAVY NA DĚLBĚ PŘEPRAVNÍ PRÁCE A VLIV DÉLKY VYKONANÉ CESTY NA POUŽITÍ DOPRAVNÍHO PROSTŘEDKU

Seriál: Management projektů 7. rámcového programu

Těhotenský test pro zrakově postižené Tereza Hyková

SBÍRKA ZÁKONŮ. Ročník 2012 ČESKÁ REPUBLIKA. Částka 14 Rozeslána dne 31. ledna 2012 Cena Kč 53, O B S A H :

Orientační průvodce mateřstvím a rodičovstvím v zadávacích dokumentacích poskytovatele

KAPITOLA 6.3 POŽADAVKY NA KONSTRUKCI A ZKOUŠENÍ OBALŮ PRO INFEKČNÍ LÁTKY KATEGORIE A TŘÍDY 6.2

Podrobný postup pro vygenerování a zaslání Žádosti o podporu a příloh OPR přes Portál farmáře

Zabezpečení Uživatelská příručka

Programy SFRB využijte co nejvýhodněji státní úvěr na opravu vašeho bytového domu.

Vyvažování tuhého rotoru v jedné rovině přístrojem Adash Vibrio

Registr UJO. Příručka pro uživatele. Institut biostatistiky a analýz. Lékařské a Přírodovědecké fakulty Masarykovy univerzity.

Oprava střechy a drenáže, zhotovení a instalace kované mříže kostel Sv. Václava Lažany

Stanovisko komise pro hodnocení dopadů regulace

Výstavba víceúčelových sportovních zařízení Stavební práce Předpokládaná hodnota VZ (v Kč bez DPH):

EXPERTNÍ POSUDEK Doc. RNDr. Martin Ouředníček, Ph.D. Stručný výtah z posudku.

Dne obdržel zadavatel tyto dotazy týkající se zadávací dokumentace:

1.2.5 Reálná čísla I. Předpoklady:

vismo Edituj, co vidíš.

Miroslav Kunt. Srovnávací přehled terminologie archivních standardů ISAD(G), ISAAR(CPF) a české archivní legislativy

PROVÁDĚCÍ NAŘÍZENÍ KOMISE (EU)

BRICSCAD V16. Modelování strojírenských sestav

Transkript:

Excel Asistent Magazín 04/2003 Funkce pro vyhledávání v seznamech 1/2 Jiří Číhař, Dataspectrum http:// // ( nedílnou součástí tohoto magazínu je i soubor ExcelAsistentMagazin042003.xls obsahující příklady použité v tomto magazínu. Tento soubor který si můžete stáhnout z adresy http:///excelmag/download/eam0403x.zip) ExcelAsistentMagazín je určen k volnému šíření. Pokud Vás jeho obsah zaujal, zašlete jej prosím svým kolegům a přátelům. EXCEL ASISTENT MAGAZÍN 04/2003... 1 1. PROČ OVLÁDAT FUNKCE PRO VYHLEDÁVÁNÍ V SEZNAMECH... 2 2. K ČEMU LZE FUNKCE PRO VYHLEDÁVÁNÍ V SEZNAMECH POUŽÍT... 2 3. CO JE TŘEBA ZNÁT PRO ÚSPĚŠNÉ POUŽÍVÁNÍ VYHLEDÁVACÍCH FUNKCÍ... 3 4. PRVNÍ PŘÍKLAD PRO OBJASNĚNÍ - VYHLEDÁNÍ PSČ... 3 5. VYHLEDÁVÁNÍ PŘIBLIŽNÝCH HODNOT FUNKCÍ SVYHLEDAT... 6 6. K ČEMU TEDY MŮŽEME VYUŽÍT HLEDÁNÍ PŘESNÉHO VÝSLEDKU... 7 7. SVYHLEDAT A NÁVRATOVÝ KÓD CHYBY #N/A... 10 8. VYHLEDÁVÁNÍ VE VODOROVNÉM SMĚRU... 11 9. OMEZENÍ FUNKCE SVYHLEDAT ( A VVYHLEDAT)... 12 10. SYNTAXE FUNKCÍ INDEX A POZVYHLEDAT... 12 11. DVOUROZMĚRNÉ VYHLEDÁVÁNÍ SPOLUPRÁCE FUNKCÍ INDEX A POZVYHLEDAT... 14 12. DVOUROZMĚRNÉ VYHLEDÁVÁNÍ PODRUHÉ ALTERNATIVNÍ POSTUP... 15 13. DVOUROZMĚRNÉ VYHLEDÁVÁNÍ POTŘETÍ ZAPOMEŇME NA INDEX... 16 14. DVOUROZMĚRNÉ VYHLEDÁVÁNÍ POČTVRTÉ ( A NAPOSLEDY ) OPERÁTOR... 18 15. VÍCENÁSOBNÁ KRITERIA VYHLEDÁVÁNÍ... 20 16. VÍCENÁSOBNÁ KRITERIA VYHLEDÁVÁNÍ ALTERNATIVNÍ POSTUP... 21 17. CO NÁS ČEKÁ V PŘÍŠTÍM POKRAČOVÁNÍ... 23 1

1. Proč ovládat funkce pro vyhledávání v seznamech Při kontaktech s uživateli Excelu je patrné, že převážná většina těch, kteří jsou svým okolím považování za experty v prostředí Excelu, skutečně mistrovsky ovládají především tři nástroje: funkce pro vyhledávání v seznamech kontingenční tabulky vložené názvy Je možné říci, že jsou to právě funkce, kterými lze efektivně procházet a zejména PROPOJOVAT navzájem nezávislé seznamy uložené v různých listech nebo dokonce sešitech Excelu. Vzhledem ke skutečnosti, že Excel je na mnoha pracovištích používán i jako nástroj pro správu jednoduchých databází, je znalost efektivního způsobu vyhledávání dat nezbytnou podmínkou pro plnohodnotné využívání jeho potenciálu ( a tvůrčího potenciálu uživatele). S nasazením těchto funkcí je možné v Excelu úspěšně pracovat i s relačními databázemi, ačkoliv databázový specialista by mne jistě s tímto tvrzením poslal do nelibozvučných míst. Na druhou stranu, proč vynakládat další prostředky ( jak finanční, tak časové při učení se nějakému plnohodnotnému systému správy dat), když v našem počítači je nainstalován Excel a čeká na příležitost, jak opět prokázat svoji flexibilitu a téměř neomezenou možnost v zacházení s daty. ( pokud se někdo domnívá, že Excel není primárně určený databázový nástroj, pak má pravdu. Také má pravdu, když tvrdí, že není textový editor a tisíce uživatelů jej tímto způsobem využívají k psaní jednoduchých dokumentů. Excel asi není ani grafický editor často je však používán k tvorbě diagramů nebo firemní grafiky) Domnívám se, že pokud pochopíme možnosti vyhledávacích funkcí, přehodnotíme i tvrzení, že Excel není nástroj pro správu dat. Pravdou je, že není určen pro víceuživatelskou práci zpracování databáze v rámci jedné pracovní stanice však ovládá velice dobře. Vzhledem k rozsahu a významu probíraného tematu, rozdělil jsem ho na dvě části pokračování naleznete v dalším čísle ExcelAsistentMagazínu 05/2003. 2. K čemu lze funkce pro vyhledávání v seznamech použít Následující výčet není rozhodně vyčerpávající poskytne nám pouze orientační přehled možných typů problémů, pro které jsou vyhledávací funkce vhodné: vyhledání dat v rozsáhlém seznamu porovnání hodnot ve dvou seznamech a nalezení chybějících záznamů propojení více seznamů najednou přiřazení hodnoty do zadaného intervalu hodnot 2

nalezení hodnoty odpovídající více vyhledávacím kriteriím načtení hodnot ze zavřeného sešitu konverze sady dat na hodnoty jiného typu vysoce kompaktním způsobem 3. Co je třeba znát pro úspěšné používání vyhledávacích funkcí správnou syntaxi funkcí ( nápověda Excelu je podle mého názoru přehledná a poskytuje základní informace v dostatečné míře) znát slabiny vědět, kdy nám tyto funkce mohou lhát 4. První příklad pro objasnění - vyhledání PSČ Vyhledávací funkce jsou nástrojem pro nalezení informace v seznamu na základě vyhledávacího klíče pokusím se přeložit, co jsem právě napsal. Vyhledávací vzorec v podstatě vrací hodnotu ze seznamu tím, že vyhledá jinou hodnotu. Vhodným příkladem je vyhledávání v telefonním seznamu. Potřebujeme-li nalézt telefonní číslo nějaké osoby, nehledáme přímo toto číslo, ale hledáme nejdříve jméno osoby ve jmenném seznamu všech telefonních účastníků. Číslo pak nalezneme posunem v nalezeném řádku. Další analogií je vyhledávání poštovního směrového čísla. Nejdříve vyhledáme v seznamu obec a pak získáme na základě nalezené pozice v seznamu PSČ této obce. Prohledávání televizního programu je dalším příkladem tohoto konceptu vyhledávání informace na základě dohledání jiné, související informace klíče. Následující příklad ukazuje použití funkce SVYHLEDAT ( Svisle VYHLEDAT) k nalezení PSČ pro obec Skuhrov: 3

Syntaxe je jednoduchá nepotřebujeme znát více, než vepsat příslušné argumenty do dialogového okna při zadávání funkce: Pokud se však potřebujeme seznámit s významem jednotlivých parametrů funkce podrobně, pak nám dobře poslouží nápověda Excelu: Hledat je hodnota, kterou chcete vyhledat v prvním sloupci prohledávané tabulky. Může to být hodnota, odkaz nebo textový řetězec. Tabulka je oblast s informacemi, které chcete prohledat. Můžete použít odkaz na oblast nebo název oblasti, například Databáze nebo Seznam. Zadáte-li jako argument typ hodnotu PRAVDA, musí být hodnoty v prvním sloupci tabulky seřazeny vzestupně:..., -2, -1, 0, 1, 2,..., A-Z, NEPRAVDA, PRAVDA, jinak by funkce SVYHLEDAT mohla vracet nesprávné výsledky. Zadáte-li jako argument typ hodnotu NEPRAVDA, nemusí být tabulka nijak seřazena. Hodnoty můžete seřadit vzestupně pomocí příkazu Seřadit v nabídce Data klepnutím na přepínač Vzestupně. Hodnotami v prvním sloupci tabulky mohou být texty, čísla nebo logické hodnoty. Funkce nerozlišuje malá a velká písmena. Sloupec je číslo sloupce uvnitř tabulky, z něhož chcete vrátit odpovídající hodnotu. Pokud sloupec = 1, bude funkce vracet hodnotu z prvního sloupce tabulky; pokud sloupec = 2, bude vracet hodnotu z druhého sloupce tabulky atd. Zadáte-li hodnotu argumentu sloupec menší než 1, bude výsledkem funkce SVYHLEDAT chybová hodnota #HODNOTA!. Jestliže zadáte hodnotu argumentu sloupec větší, než je počet sloupců v tabulce, bude výsledkem funkce SVYHLEDAT chybová hodnota #REF!. Typ je logická hodnota, která určuje, zda má hodnota nalezená funkcí SVYHLEDAT odpovídat zadané hodnotě přesně nebo jen přibližně. Pokud tento argument vynecháte, použije se přibližné vyhledávání (není-li nalezena hodnota přesně odpovídající hledané hodnotě, vrátí funkce největší hodnotu menší než hledat). Použijete-li 4

argument NEPRAVDA, bude funkce SVYHLEDAT hledat pouze zadanou hodnotu. Pokud ji nenajde, vrátí chybovou hodnotu #N/A. Velice častá chyba při používání funkce SVYHLEDAT je opomenutí posledního argumentu funkce. Pokud hledáme přesnou hodnotu, pak musíme vždy zadat hodnotu argumentu 0 ( neboli NEPRAVDA). Pokud zadáme jinou hodnotu parametru nebo jej vynecháme, Excel se domnívá, že chceme nalézt pouze přibližnou hodnotu 1. parametru funkce Pokud v našem příkladu opomeneme zadat poslední argument, funkce vrátí z našeho pohledu chybný výsledek: Funkce se však chová přesně podle nápovědy: Zadáte-li jako argument typ hodnotu PRAVDA, musí být hodnoty v prvním sloupci tabulky seřazeny vzestupně:..., -2, -1, 0, 1, 2,..., A-Z, NEPRAVDA, PRAVDA, jinak by funkce SVYHLEDAT mohla vracet nesprávné výsledky. Zadáte-li jako argument typ hodnotu NEPRAVDA, nemusí být tabulka nijak seřazena. Podíváme se, jak se bude funkce chovat, pokud seřadíme první sloupec tabulky: 5

Vidíme, že po VZESTUPNÉM seřazení položek 1. sloupce tabulky ( tedy našeho klíče pro vyhledávání ) nám už funkce vrátí požadovaný výsledek. Zapamatujme si, že seřazení položek podstatně zrychluje proces vyhledávání to je podstatné u rozsáhlých seznamů, nebo v případě, že v našich sešitech využíváme mnoho vyhledávacích funkcí. Samozřejmě pokud hledáme přesnou hodnotu, pak můžeme pracovat se seznamem neseřazeným i řazeným ( vzestupně i sestupně). Pouze při hledání přibližné hodnoty ( největší nižší) musíme seznam seřadit vzestupně. 5. Vyhledávání přibližných hodnot funkcí SVYHLEDAT V této chvíli se nám může zdát, že možnost vyhledat přibližné hodnoty je neužitečná a snad i nebezpečná vždyť může vracet zcela nesmyslné ( z našeho pohledu) hodnoty. Opak je pravdou. Vyhledávání přibližných hodnot je stejně tak často používané, jako vyhledávání hodnot přesných. Příklad v této části nám ukáže jedno z možných využití. Úkolem je přiřadit sazbu daně pro zadanou výši příjmu: 6

Trik spočívá v tom, že základní tabulka nemusí obsahovat všechny hodnoty výše příjmů ( úsměvná představa), ale jen hranice jednotlivých intervalů. SVYHLEDAT pak při absenci posledního, 4-tého argumentu nalezne přibližnou ( tj. největší nižší ) hodnotu k hodnotě hledané ( v našem případě je to hodnota 204 001 vzhledem k hledané hodnotě 300 000) a vrátí z třetího sloupce příslušnou hodnotu sazby daně. Pokud si uvědomíme, jak rozsáhlá by musela být tabulka, pokud by funkce SVYHLEDAT uměla pouze vracet přesnou hodnotu, pochopíme, jak mocný nástroj je uložen ve schopnosti vracet přibližnou hodnotu. Opět ale mějme na paměti, že pro řádné chování funkce musíme prohledávaný sloupec ( tedy 1. sloupec tabulky seřadit vzestupně ). 6. K čemu tedy můžeme využít hledání PŘESNÉHO výsledku Mnozí pokročilí uživatelé Excelu využívají funkci SVYHLEDAT pro dohledání rozdílných položek v různých seznamech. Vraťme se našemu prvnímu příkladu se směrovými čísly a předpokládejme, že máme k dispozici dvojici seznamů ( původní a aktualizovaný) a zajímá nás, zda jsou tyto seznamy identické. Víme, že oba seznamy obsahují stejný počet položek, což však zdaleka nemusí znamenat, že všechny položky v těchto seznamech jsou navzájem identické. Příklad s cílem potvrdit shodnost seznamů, nebo přímo nalézt diference ukazuje jednu z nejčastějších oblastí využití naší funkce: Do 1. buňky, která má obsahovat výsledek (G2) zapíšeme vzorec =SVYHLEDAT(A2;$D$2:$D$16;1;0) a pak jej zkopírujeme do všech zbývajících buněk. 7

Samozřejmě můžeme použít známý trik a zkopírovat buňky dolů ve směru seznamu v předchozím sloupci kliknutím na pravý spodní úchyt v buňce G2: Funkce SVYHLEDAT nalezla 1 diferenci mezi oběma seznamy v seznamu1 je obsažena obec Podlesí, která však chybí v seznamu2. Protože oba seznamy mají stejný počet hodnot, musí být chybějící hodnota nahrazena jinou. Která to je však zatím z výsledku hledání nezjistíme. Pomůže nám obrácené vyhledávání: Vidíme, že druhý seznam obsahuje obec Podlesice, která však není v prvním seznamu obsažena. Výsledkem oboustranného vyhledávání je tedy následující informace: seznamy se liší v jedné položce tato položka má v seznamu1 hodnotu Podlesí, kdežto v seznamu2 hodnotu Podlesice Velice mocnou vlastností funkce SVYHLEDAT, která však není v tomto příkladu patrna, je schopnost odkazovat se ve svých argumentech na různé listy nebo dokonce i sešity. Platí dokonce i ještě silnější tvrzení pomocí této funkce můžeme prohledávat i data v uzavřeném sešitu - ale o tom si povíme více v dalším pokračování tohoto magazínu. 8

Dvě nejčastější chyby, kterých se uživatelé dopouštějí při použití funkce SVYHLEDAT pro vyhledání rozdílů v seznamech, jsou: 1. nezadají poslední argument, nebo zadají jinou hodnotu než 0 funkce pak vrátí přibližné výsledky a interpretace těchto výsledků uživatelem vede k nesprávným závěrům 2. uživatelé nezadají 2. argument tabulku, která se má prohledávatve tvaru absolutního odkazu. Při kopírování vzorce směrem dolů pak je tažena dolů i tato oblast a funkce pak vlastně prohledává tabulku jen od řádku, na kterém se nachází. Následující obrázek ukazuje závažnost této chyby: Místo toho, aby funkce zapsaná v buňce G5 prohledávala tabulku D2:D16, pracuje s tabulkou D5:D19, což znamená, že vůbec nebere v úvahu první tři buňky oblasti dat. V případě poslední buňky G16 tabulka zasahuje do jediné buňky původní oblasti dat a sice do buňky D16. Jednoduchý trik usnadňující zápis absolutních hodnot spočívá v tom, že v průběhu zadávání oblasti nebo posléze v editačním režimu zvolíme příslušnou část vzorce a pak opakovaným stiskem klávesy F4 měníme relativní odkaz na smíšený a absolutní. 9

stiskneme F4 7. SVYHLEDAT a návratový kód chyby #N/A Pokud používáme vyhledávací funkce v dokumentech určených pro další uživatele, pro prezentaci apod., není příliš žádoucí, aby se v buňkách objevovaly chybové hodnoty. Neznalý uživatel pak neví, o jakou chybu se jedná a v důsledku může být snížena důvěryhodnost našeho dokumentu. Proto je vhodné chybové hodnoty odstranit, případně nahradit jinou hodnotou. Na předchozím příkladu si ukážeme obvyklý způsob řešení tohoto problému a pak si předvedeme i jeden z alternativních postupů. Následující obrázek ukazuje, jak změníme zápis vzorce: Původní vzorec =SVYHLEDAT(A2;$D$2:$D$16;1;0) změníme na ( na první pohled) složitější zápis =KDYŽ(JE.NEDEF(SVYHLEDAT(A2;$D$2:$D$16;1;0));"NENALEZENO";SVYHLE DAT(A2;$D$2:$D$16;1;0)) Základem řešení je použití funkce JE.NEDEF, která ověří, zda její argument je chybová hodnota #N/A ( hodnota nedostupná ), a vrátí hodnotu PRAVDA nebo NEPRAVDA. Pokud tedy funkce SVYHLEDAT nenalezne příslušnou hodnotu, pak vrací hodnotu #N/A, která je pomocí funkce JE.NEDEF změněna na hodnotu PRAVDA. Tento argument je pak 10

vložen do funkce KDYŽ a ta zapíše do buňky text NENALEZENO, nebo jakýkoliv jiný specifikovaný ve funkci. Pokud funkce SVYHLEDAT nalezne nějakou hodnotu, funkce JE.NEDEF vrátí hodnotu NEPRAVDA a vnější funkce KDYŽ výpočet posune do části odpovídající nesplněné podmínce - a vní máme opět uloženou funkci pro vyhledání SVYHLEDAT. Výše uvedený postup je často používán a patří k základní výbavě při práci s vyhledávacími vzorci. Při informačních auditech se často setkávám s výše uvedeným postupem a s podivem autorů, když je upozorňuji na možné důsledky jinak vhodného řešení. Funkce SVYHLEDAT totiž nepatří mezi nejrychlejší a rychlost přepočítávání sešitů rapidně klesá s množstvím těchto funkcí. Není výjimkou, že rozsáhlé modely obsahují stovky i tisíce těchto funkcí. Pokud si uvědomíme, že navržený postup eliminace chybových hodnot zdvojnásobuje počet funkcí, je zřejmé, že v důsledku může mít ke značnému zpomalení sešitu. To by ale ještě nemuselo znamenat katastrofu. Mnohem horší důsledky však často má snaha vypořádat se s touto situací nevhodným způsobem. Někteří uživatelé vypnou přepočítávání buněk s tím, že používají klávesu F9 pro ruční přepočet. Bohužel často vídám, že mnoho chyb vzniká tím, že na své dobré předsevzeí zapomínají, přepočet neprovedou a tak v sešitě zůstávají neaktualizované údaje. Nikomu nepřejí zažít to překvapení, když zjistí, že jeho finanční sestavy jsou o několik set tisíc mimo realitu jen proto, že někdy v minulosti zapomněl stisknout klávesu F9. Jsou ale i uživatelé, kteří se rozhodnou nahradit většinu vzorců v sešitu jejich hodnotami rychlost zpracování se několikanásobně zrychlí, důsledek je často obdobný. Jen s tím rozdílem, že místo opomenutí zapnutí přepočtu zapomenou při změně nebo aktualizaci vstupních dat nahradit hodnoty zpět původními vzorci nebo je nahradí jen zčásti. A to není ještě zdaleka vše. Funkce SVYHLEDAT je velice citlivá na vkládání a vyjímání buněk v oblasti jejich argumentů. Tyto změny mohou také vést a často vedou ke snížení vypovídací schopnosti funkce. Rád bych znovu zdůraznil, a mé tvzení není přehnané, že téměř každý rozsáhlý projekt založený na funkci SVYHLEDAT dříve nebo později bude obsahovat chybné hodnoty. Mé zkušenosti s audity excelovských souborů to bohužel potvrzují. Faktem však zůstává, že při správě rozsáhlejších seznamů v Excelu se bez této funkce ( nebo jiných vyhledávacích funkcí) neobejdeme. Musíme však být maximálně opatrní a neustále ověřovat věrohodnost výsledků. 8. Vyhledávání ve vodorovném směru Funkce SVYHLEDAT nám umožňuje prohledávat oblast dat ve svislém směru. Vodorovný směr je zapovězen. Nicméně pokud máme potřebu prohledávat oblast ve vodorovném směru, pak nám Excel nabízí analogickou funkci VVYHLEDAT ( Vodorovně VYHLEDAT). Syntaxe a způsob použití je až na záměnu směru vyhledávání ze sloupců na řádky totožný. 11

9. Omezení funkce SVYHLEDAT ( a VVYHLEDAT) Velice mocná funkce SVYHLEDAT však v sobě skrývá několik nedostatků: 1. není příliš rychlá 2. neumožňuje vyhledávat pomocí zástupných znaků? a * 3. vrací hodnoty pouze ze sloupců NAPRAVO od klíčového sloupce 4. v případě sestupně uspořádané tabulky hodnot nemusí vždy vracet správné výsledky v případě, že požadujeme nalézt přibližnou hodnotu 5. neumožňuje dvourozměrné vyhledávání ( bohužel nelze navzájem kombinovat v jednom vzorci funkce SVYHLEDAT a VVYHLEDAT) Co se skrývá pod pojmem dvourozměrné vyhledávání, ilustruje obrázek: Pokud bychom potřebovali vyhledat v tabulce obrat prodejce Jirka za období duben, musíme hledat ve svislém směru období, a zároveň ve vodorovném směru jméno prodejce, abychom v průsečíku řádku duben a sloupce Jirka nalezli hodnotu jeho prodeje. Pokusy zkombinovat v jednom vzorci funkce SVYHLEDAT a VVYHLEDAT nebudou úspěšné je tedy vůbec možné tuto úlohu vyřešit? Odpověď zní ano pokud se naučíme používat kombinaci funkcí INDEX a POZVYHLEDAT. 10. Syntaxe funkcí INDEX a POZVYHLEDAT Nápověa Excelu popisuje obě funkce poměrně podrobně: INDEX Vrátí hodnotu prvku tabulky nebo matice označeného indexem řádku a sloupce. INDEX(pole;řádek;sloupec) 12

Pole je oblast buněk nebo maticová konstanta. Pokud argument pole určuje oblast pouze s jedním řádkem nebo sloupcem, může být příslušný argument řádek nebo sloupec vynechán. Pokud oblast pole obsahuje více než jeden řádek a sloupec a je použit pouze jeden z argumentů řádek nebo sloupec, vrátí funkce INDEX celý řádek nebo sloupec. Řádek určuje řádek pole. Pokud je argument řádek vynechán, je argument sloupec povinný. Sloupec určuje sloupec pole. Pokud je argument sloupec vynechán, je argument řádek povinný. POZVYHLEDAT Vrátí relativní pozici prvku matice, který odpovídá zadané hodnotě v určeném pořadí. Funkce POZVYHLEDAT se používá místo funkce VYHLEDAT v případech, kdy není potřeba získat hledaný prvek, ale jeho pozici. POZVYHLEDAT(co;prohledat;shoda) Co je hodnota, pomocí které hledáte v tabulce požadovanou hodnotu. Argument co je hodnota, kterou chcete nalézt v matici prohledat. Je to podobné, jako když hledáte v telefonním seznamu číslo určitého člověka. Nehledáte požadované číslo, ale jméno. Argument co může být hodnota (číslo, text nebo logická hodnota) nebo odkaz na buňku s číslem, textem nebo logickou hodnotou. Prohledat je souvislá oblast buněk, v níž chcete nalézt hledané hodnoty. Argument prohledat musí být matice nebo odkaz na matici. Shoda je číslo -1, 0 nebo 1. Shoda určuje, jakým způsobem má aplikace Microsoft Excel porovnávat hledanou hodnotu s hodnotami v prohledávané matici. Pokud shoda = 1, najde funkce POZVYHLEDAT největší hodnotu, která je menší nebo rovna hledané hodnotě (co). Hodnoty argumentu prohledat musí být přitom seřazeny vzestupně:...-2; -1; 0; 1; 2;...;A-Z; NEPRAVDA; PRAVDA. Pokud shoda = 0, najde funkce POZVYHLEDAT první hodnotu, která se přesně shoduje s hledanou hodnotou (co). Hodnoty argumentu prohledat přitom nemusí být nijak seřazeny. Pokud shoda = -1, najde funkce POZVYHLEDAT nejmenší hodnotu, která je větší nebo rovna hledané hodnotě (co). Hodnoty argumentu Prohledat přitom musí být seřazeny sestupně: PRAVDA; NEPRAVDA; Z-A;...;2; 1; 0; -1; -2;... atd. Pokud argument shoda nezadáte, použije se typ 1. 13

11. Dvourozměrné vyhledávání spolupráce funkcí INDEX a POZVYHLEDAT Před seznámením s prvním příkladem si zopakujme, co můžeme od obou funkcí očekávat. INDEX vrací hodnotu z oblasti na základě průsečíku zadaného řádku a sloupce. Její chování je podobné postupu, jak popisujeme polohu nějaké budovy restaurace, ve které se setkáme, leží v západní části města na rohu Nové ulice a ulice Severní. Pozici zadáme jako křižovatku dvou ulic v určité čtvrti obdobně INDEX vrací hodnotu z určité oblasti ( západní část města) pomocí průsečíku zadaného řádku ( ulice Nová) a sloupce ( ulice Severní). POZVYHLEDAT ( POZici VYHLEDAT ) je zvláštní v tom, že nevrací žádnou hodnotu, ale pouze relativní pozici zadané hodnoty v oblasti. Pokud takto zjištěnou pozici vložíme jako argument do funkce INDEX, získáme novou hodnotu. V této chvíli se nám může celý koncept zdát nepřehledný, ale po prozkoumání příkladu si jej jistě osvojíme. K prozkoumání chování funkce použijeme známý postup pomocí klávesy F9 ( viz ExcelAsistentMagazín 03/2003). Spustíme editační režim vzorce a aktivujeme v řádku vzorců oblast 3. argumentu: Nyní stiskneme klávesu F9 Excel provede částečný výpočet vzorce: 14

( Pokud nyní stiskneme klávesu ESC nebo klikneme na znak červeného křížku nalevo od zápisu vzorce, vše se vrátí do původního stavu) Podstatné je, že nyní víme, že 3. argument SLOUPEC má hodnotu 5. Pokud opakujeme celý postup i pro první argument ŘÁDEK zjistíme, že má také hodnotu 5. Výsledek? Funkce INDEX vrátí hodnotu z 5. řádku a 5.sloupce oblasti A1:E13 tedy hodnotu buňky E5 12. Dvourozměrné vyhledávání podruhé alternativní postup Třebaže Excel je vynikající tabulkový kalkulátor, zdá se, že v oblasti dvourozměrného (2D) vyhledávání je těžkopádný. A přitom by jistě bylo možné naprogramovat funkci, která by měla uživatelsky jednoduché ovládání. Koneckonců Lotus123 ( ano, bývaly doby, kdy Excel měl konkurenci) nabízel funkci XINDEX, která pomocí trojice argumentů vracela hodnoty právě formou dvourozměrného vyhledávání. V dalším příkladu si ukážeme, jak realizovat 2D vyhledávání pomocí kombinace funkcí INDEX, POZVYHLEDAT a POSUN. Mnozí uživatelé, jakmile se seznámí s tímto postupem, dávají mu napříště přednost je škoda, že oficiální nápověda Excelu o něm vůbec nehovoří a často nebývá zmiňován ani v podrobných příručkách pro pokročilé uživatele. 15

Porovnejme si obě funkce: =INDEX(A1:E13;POZVYHLEDAT(E15;A1:A13;0);POZVYHLEDAT(E16;A1:E1;0)) =INDEX(A1:E13;POZVYHLEDAT(E15;POSUN(A1:E13;;;;1);0); POZVYHLEDAT(E16;POSUN(A1:E13;;;1);0)) V čem spočívá hlavní rozdíl obou postupů? Vidíme, že rozdíl je ve 2. argumentu funkce POZVYHLEDAT ( souvislá oblast buněk, v níž chceme nalézt hledané hodnoty): 1. případ =INDEX(A1:E13;POZVYHLEDAT(E15;A1:A13;0);POZVYHLEDAT(E16;A1:E1;0)) A1:A13 - sloupec s levým záhlavím (označením měsíců) A1:E1 - řádek s horním záhlavím ( označením prodejců) 2. případ =INDEX(A1:E13;POZVYHLEDAT(E15; 0); POSUN(A1:E13;;;;1);POZVYHLEDAT(E16;POSUN(A1:E13;;;1);0)) POSUN(A1:E13;;;;1) - sloupec s levým záhlavím (označením měsíců) POSUN(A1:E13;;;1) - řádek s horním záhlavím ( označením prodejců) Hlavní rozdíl je v tom, že ve 2. případě používáme pouze odkazy na oblast dat ( tedy oblast A1:E13) a funkce POSUN sama určí levé a horní záhlaví, ve kterém funkce POZVYHLEDAT nalezne hodnoty výběru ( tedy duben a Jirka ). S funkcí POSUN se podrobně seznámíme v některém z dalších pokračování. Není to funkce, která by byla používána sama o sobě, ale v součinnosti s dalšími funkcemi je pro mnohé úlohy zcela nepostradatelná. 13. Dvourozměrné vyhledávání potřetí zapomeňme na INDEX Pokud by se nám předchozí příklad zdál přeci jen složitý, zkusím nabídnout dvourozměrné vyhledávání pouze s použitím POSUN a POZVYHLEDAT. A to i proto, abych opět ukázal, že v Excelu je opravdu téměř vždy možné úlohu řešit více postupy, a je jen na nás zvolit pro danou příležitost ten nejvhodnější z hlediska rychlosti zpracování, jednoduchosti zápisu, jednoduchosti zpracování, rozšiřitelnosti, odolnosti vůči chybným zápisům atd. Tento příklad nebudu podrobně vysvětlovat budu se řídit slovy klasika, že jeden obrázek je více než deset ( sto?) slov. 16

Vidíme, že jsme funkci podstatně zkrátili: =POSUN(A1;POZVYHLEDAT(E15;A1:A13;0)-1;POZVYHLEDAT(E16;A1:E1;0)-1) Vypadá to, že v oblasti dvourozměrného vyhledávání se můžeme pořádně vydovádět co takhle nabídnou kombinaci tohoto a předchozího postupu: 17

Pokud už máte dost dvourozměrného vyhledávání a říkate si méně je někdy opravdu více, pak vám dávám za pravdu. Výše uvedené postupy sloužící k 2D vyhledávání jsou jen ukázkou některých, s nimiž jsem se při auditech a kontrolách excelovských souborů setkal. Je dobře, že Excel umožňuje takovou variabilitu řešení, na druhou stranu bychom vždy měli dobře volit, proč použít nový postup místo již zavedeného. Pokud důvodem je vyšší rychlost nebo stabilita, pak lze se změnou samozřejmě souhlasit ale. Ale znamená, že příliš časté změny pracovních postupů mohou vést k nepřehlednosti nejen pro samostné autory, ale zejména pro další čtenáře a uživatele těchto modelů. Pokud osoba, které naše soubory předáváme, není dostatečně obeznámena s problematikou vyhledávacích funkcí a z nich vytvořených vzorců, může v těchto souborech zcela ztratit orientaci. 14. Dvourozměrné vyhledávání počtvrté ( a naposledy ) operátor Ne, v nadpise není chyba. Opravdu budeme hovořit o jednom z nejužitečnějších operátorů Excelu. Vedle notoricky známých operátorů jako je + pro sečtení numerických hodnot, - pro jejich rozdíl, & pro sloučení řetězců atd. má Excel i operátor ( operátor průsečíku neboli implicitní průsečík ) pro realizaci dvourozměrného vyhledávání. Že by Excel nakonec předčil Lotus? Nebo se jedná pouze o nafouknutou bublinu a vlastnost, která v praxi k ničemu není? Ukážeme si příklad a pak se rozhodneme, zda nám tento operátor stojí za zapamatování. Z obrázku je patrné, že k nalezení obratu prodejce Jirka za období duben nám stačí zapsat pouze následující vzorec: = duben Jirka Excel je natolik inteligentní, že opraví i případný nesoulad velkých a malých písmen pokud zapíšeme = duben jirka a stiskneme Enter, v buňce se objeví správný tvar = duben Jirka. 18

Podmínkou pro využívání operátoru průsečíku je, že oblast na kterou se odkazujeme, má tvar pravoúhelníku s důsledně popsaným záhlavím řádků a sloupců a že máme tuto vlastnost povolenu v menu Nástroje > Možnosti > karta Výpočty: Microsoft implementoval do chování operátoru průsečík mnohé rysy umělé inteligence, která je v Excelu obsažena. Pokud budete s tímto operátorem experimentovat, zjistíte, že je schopen reagovat nejen na velikost písmen, ale i na změnu názvu sloupce nebo řádku. Někdy však může Excel odmítnout akceptovat název předaný průsečíku. Stává se to tehdy, když tento název je v kolizi s rezervovanými výrazy názvy funkcí, maker apod. Řešením je uzavřít problematický název mezi apostrofy: = 'Jirka' 'duben' Vzhledem k chování Excelu, kdy se snaží do značné míry korigovat zápis argumentů, může někdy dojít k jejich nesprávné interpretaci, a Excel pak vrací nesprávné výsledky - obezřetnost je rozhodně na místě. 19

15. Vícenásobná kriteria vyhledávání Představme si následující situaci: prodejce období sortiment obrat Pavel leden A 34 850 Jitka leden A 61 200 Jirka leden A 66 000 Pavel leden B 58 000 Jitka leden B 51 800 Jirka leden B 56 000 Pavel únor A 82 000 Jitka únor A 97 000 Jirka únor A 134 000 Pavel únor B 47 200 Jitka únor B 73 950 Jirka únor B 81 000 Pavel březen A 74 545 Jitka březen A 55 285 Jirka březen A 113 000 Pavel březen B 82 000 Jitka březen B 68 000 Jirka březen B 95 000 Naším úkolem je nalézt obrat za prodejce Jitka období únor sortiment A Vidíme, že nám dosavadní znalosti vyhledávacích funkcí nepomohou, protože argumenty vyhledávacích klíčů vždy pracují s hodnotami jediného sloupce. Musíme tedy postupovat jiným způsobem. Nejčastější postup je založen na vytvoření pomocného sloupce, ve kterém sloučíme hodnoty původních sloupců, v nichž hledáme kriteria ( použijeme buď operátor pro sloučení řetězců & nebo funkci CONCATENATE). Poté už postupujeme známým způsobem. 20

po vytvoření pomocného sloupce použijeme vzorec =SVYHLEDAT(E21&E22&E23;D1:E19;2;0) který již dobře známe. 16. Vícenásobná kriteria vyhledávání alternativní postup Předchozí řešení je jednoduché a vede ve většině případů ke správným výsledkům. Někdy ale nemusí být vhodné nebo dosažitelné vložení nového sloupce například pokud je list uzamčen pro úpravy. Pak nám může pomoci postup, při kterém není potřeba modifikovat strukturu listu. Jak vidíme, celé řešení je založeno na použití maticových vorců ( této tematice jsme věnovali celé předchozí číslo ExcelAsistentMagazínu 03/2003) 21

V 1. případě se jedná o vzorec {=INDEX(D1:D19;POZVYHLEDAT(D21&D22&D23;A1:A19&B1:B19&C1:C19;0))}, kde v rámci funkce POZVYHLEDAT jsou sloučeny hodnoty ve sloupcích kriterií pomocí oprátoru &. 2. příklad obsahuje velice zajímavý trik v rámci funkce POZVYHLEDAT =INDEX(D1:D19;POZVYHLEDAT(1;(A1:A19=D21)*(B1:B19=D22)*(C1:C19=D23);0)) Podívejme se na tento vzorec podrobněji pomocí režimu částečného výpočtu, který spustíme klávesou F9 po aktivaci části vzorce. A1:A19=D21 tedy A1:A19= Jitka nám vrací matici pravdivostních hodnot {NEPRAVDA NEPRAVDA PRAVDA NEPRAVDA NEPRAVDA } B1:B19=D22 tedy B1:B19= únor vrací matici {NEPRAVDA NEPRAVDA NEPRAVDA NEPRAVDA NEPRAVDA } C1:C19=D23 tedy C1:C19= B vrací matici {NEPRAVDA NEPRAVDA NEPRAVDA NEPRAVDA PRAVDA PRAVDA } tyto tři matice mezi sebou vynásobíme víme, že výsledky násobení se řídí pravidly: PRAVDA * PRAVDA = PRAVDA PRAVDA * NEPRAVDA = NEPRAVDA NEPRAVDA * PRAVDA = NEPRAVDA NEPRAVDA * NEPRAVDA = NEPRAVDA zároveň platí, že násobení převádí automaticky pravdivostní hodnoty na jejich číselné ekvivalenty, tj. PRAVDA=1 a NEPRAVDA=0 výsledná matice má hodnotu {0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0} Pro větší názornost si teno postup ukážeme v tabulce: prodejce období sortiment A*B*C NEPRAVDA NEPRAVDA NEPRAVDA 0 PRAVDA NEPRAVDA NEPRAVDA 0 NEPRAVDA NEPRAVDA NEPRAVDA 0 NEPRAVDA NEPRAVDA PRAVDA 0 PRAVDA NEPRAVDA PRAVDA 0 NEPRAVDA NEPRAVDA PRAVDA 0 NEPRAVDA PRAVDA NEPRAVDA 0 PRAVDA PRAVDA NEPRAVDA 0 NEPRAVDA PRAVDA NEPRAVDA 0 NEPRAVDA PRAVDA PRAVDA 0 PRAVDA PRAVDA PRAVDA 1 NEPRAVDA PRAVDA PRAVDA 0 NEPRAVDA NEPRAVDA NEPRAVDA 0 PRAVDA NEPRAVDA NEPRAVDA 0 NEPRAVDA NEPRAVDA NEPRAVDA 0 NEPRAVDA NEPRAVDA PRAVDA 0 PRAVDA NEPRAVDA PRAVDA 0 NEPRAVDA NEPRAVDA PRAVDA 0 řádek, ve kterém je ve sloupci A*B*C hodnota 1 odpovídá řádku, v němž jsou obsženy všechny hledávané hodnoty Jitka únor B POZVYHLEDAT(1;(A1:A19=D21)*(B1:B19=D22)*(C1:C19=D23);0) pracuje tak, že vyhledá v předchozí matici hodnotu 1 ( první argument) a vrátí pořadové číslo této jedničky v matici číslo 12. 22

Hodnota 12 je předána funkci INDEX : INDEX(D1:D19;12) úlohou INDEXu je tedy vrátit dvanáctou hodnotu z oblasti D1:D19 číslo 73 950 17. Co nás čeká v příštím pokračování vyhledávání dat v uzavřeném sešitu trojrozměrné (3D) vyhledávání vnořené funkce SVYHLEDAT použití maticových konstant ve vyhledávacích vzorcích a maticový zápis vyhledávacích vzorců použití zástupných znaků při hledání hodnot podmíněné vyhledávání n-té hodnoty z oblasti dat nalezení nejbližší hodnoty místo hodnoty přibližné použití vyhledávacích funkcí v kódech jazyka VBA rozšíření možností vyhledávacích funkcí pomocí funkce NEPŘÍMÝ.ODKAZ vyhledání chybějících záznamů ve dvou sadách dat využití průvodce vyhledáváním ( nedílnou součástí tohoto magazínu je i soubor ExcelAsistentMagazin042003.xls obsahující příklady použité v tomto magazínu. Tento soubor si můžete stáhnout z adresy http:///excelmag/download/eam0403x.zip) Archív všech dosud publikovaných čísel ExcelAsistentMagazínu ExcelAsistent - více než 100 funkcí pro efektivní práci v Excelu Máte dotaz týkající se práce v prostředí Microsoft Excel? Staňte se členem elektronické konference věnované výhradně Excelu http:///excelmag/excelmagmain.htm http:///pages/software/softwaremain.htm mailto:faq@dataspectrum.cz http://www.pandora.cz/conference/excel Další číslo tohoto magazínu určeného pro pokročilé techniky práce v prostředí Microsoft Excel naleznete na adrese od 10.7.2003. Copyright 2003 Jiří Číhař, Dataspectrum Jiří Číhař, Dataspectrum (http:/) Těším se na další setkání s Vámi příští měsíc. Pardubice, 10.6.2003 Jiří Číhař 23