Ó, ty štědrý Exceli

Vánoční balíček

autor: Ing. Petr Pecháček

http://officir.ic.cz

Sešity Excelu s uvedenými příklady (komprese ZIP)

Na úvod

Zasloužíte si dárky? Viděl bych to tak, že hodní jste nebyli, ale čert vás na rok vyřadil ze seznamu. Mě vlastně také. Co Vás ode mne čeká na tomto CD a v dnešním článku?
  • Některé drobné chyby v předchozích článcích byly opraveny a témata doplněny na základě vlastních úvah i poznámek čtenářů. Na tomto CD je komplet aktualizovaných článků (rozšířených souborů s příklady). Změny ale neprozradím. Je totiž čas zopakovat si lekce a projít si články od začátku...
  • Aby opakování nevyšlo naprázdno, je připraven test.
  • Snad přijdou vhod odpovědi na vybrané otázky.
  • Nějaký ten dárek se také najde...
  • Čeká Vás soutěž.

Test

  1. Formát buňky ";;;" (tři středníky) definuje:
    1. zobrazení pouze textové hodnoty
    2. neviditelný obsah buňky
    3. obsah bude zobrazen v buňce třikrát za sebou
  2. Vzorec =DATEDIF(A1;B1;"M")
    1. vypočítá rozdíl mezi daty v buňkách A1 a B1 v celých měsících
    2. porovná měsíce každého z datumů v buňkách A1 a B1 a vrátí PRAVDA, jsou-li stejné
    3. porovná měsíce každého z datumů v buňkách A1 a B1 a vrátí PRAVDA, mají-li měsíce stejný počet dnů.
  3. Klávesová zkratka Ctrl+F3 zobrazí
    1. dialog Vložit funkci
    2. dialog Definovat název
    3. dialog Vytvořit název
  4. Máme v úmyslu obarvit zvolenou buňku (podmíněné formátování), pokud obsah buňky B5 je větší nebo roven obsahu buňky A5. Použijeme zápis
    1. =B5>=A5
    2. =A(B5=A5,B5>A5)
    3. =B5>A5;B5=A5
  5. Funkce INVERZE slouží
    1. ke změně znaménka čísla v buňce
    2. k převrácení znaků v řetězci
    3. k výpočtům při práci s maticemi
  6. Bublinový graf je
    1. XY bodovým grafem rozšířeným o další proměnnou
    2. hovorově zažitý výraz pro Kruhový graf
    3. podtyp 3D grafu
  7. V českém Excelu je správný zápis
    1. =MIN(A1;A2;A3)
    2. =MINIMUM(A1;A2;A3)
    3. =MINIMUM(A1,A2,A3)
  8. Podmínky rozšířeného filtru zapsané v různých řádcích
    1. se mohou použít pouze samostatně
    2. jsou ve vzájemném vztahu "NEBO"
    3. jsou ve vzájemném vztahu "A"
  9. Prvek CheckBox je prvkem typu
    1. přepínací tlačítko
    2. textové pole
    3. zaškrtávací políčko
  10. Vzorec =USEKNOUT(-12,2;-1) vrátí
    1. -12
    2. -13
    3. -10
  11. Rudá barva v paletě Excelu (třetí v prvním sloupci) má světelnost
    1. 0
    2. 128
    3. 255
  12. Autor těchto těžkých otázek :-) původně vystudoval
    1. medicínu
    2. strojní technologie
    3. informační technologie

Správné odpovědi najdete v druhém lednovém týdnu na stránkách officir.web3.cz.

Test je soutěžní pro něžné pohlaví

Ženy pozor! Pokud odešlete správné odpovědi eletronickou poštou do 7. 1. 2005 ve tvaru:

Jmeno Prijmeni E-mail 1A 2B 3C ...
na adresu officir.soutez@seznam.cz, máte šanci vyhrát bezplatné měsíční poradenství formou elektronické pošty na zvolené téma (internet a pošta, Word, Excel, PowerPoint). V předmětu zprávy uvádějte prosím "Soutěžní test".

Pokud se dámy cítíte na víc, zkuste porazit muže v soutěžích vyhlášených níže na této stránce!

Nad dvaceti otázkami...

  1. Co znamenají číselné složky v instalačním adresáři MS Office?
    Pravděpodobně máte v českých Office na mysli složky 1029 a 1033. Složky mají význam ve vztahu k lokalizaci Office. Jedná se o tzv. LCID číslo, kdy 1029 = "Czech", 1033 = "English (U.S.)", tj. první složka obsahuje soubory českého prostředí, druhá anglického (zjednodušeně řečeno).
    Číselné složky v Office
  2. Nainstalovala jsem si Editor rovnic, ale pod C:/Program Files/Microsoft Office ho nemůžu najít.
    Ne všechny soubory z MS Office jsou nainstalovány v uvedeném adresáři. Řadu z nich najdete ve složce C:\Program Files\Common Files\Microsoft Shared. Editor rovnic je ve složce Equation.
    MS Equation
  3. Mohu mít nainstalované dvě verze Excelu?
    Ano, můžete. Nejprve nainstalujte starší verzi a poté do jiné složky novější. Zástupce obou pak doporučuji vynést na plochu. Novější verze mohou vyzvat k přepsání některých starších systémových souborů. Předpokládám, že instalujte dvě verze z důvodu testování vašich vlastních pomůcek a maker. Osobně si myslím, že nelze zaručit nezávislost obou verzí na témže počítači. Pravděpodobně budou vždy existovat kromě systému i další společně využívané prvky. Pozn. Není-li dáno jinak, klepnutí na sešit způsobí otevření v novější verzi (je-li již otevřena libovolná instance Excelu, pak se sešit otevře v ní).
    Dvě verze Excelu
  4. V Excelu XP se mi nedaří najít Microsoft Map. Je možné jej někde sehnat? A doplňkové mapy?
    Jediné co vím s jistotou, že jej ve verzi Excel XP (2002) již vývojáři do Excelu nezařadili. Sešity dřívějších verzí, které nástroj používají, zpravidla ani nedokáže Excel XP korektně otevřít... Není to tak dlouho, co jsem osobně potřeboval využít danou funkci k zobrazení dat do mapy nového krajského uspořádání. Pokud se pamatuji, verze Excel 2000 z edice Premium neobsahuje (ani v době vzniku nemohla) daný mapový soubor a na mapy je všeobecně chudá. Poslední jsem zaregistroval mapu "Okresy" v edici Office 97 Professional (tento balík obsahuje i další mapy). Pokud někdo zná detailnější odpověd, prosím o zaslání e-mailu. Děkuji.
  5. Chtěl bych použít globální šablonu pro všechny nově otevřené sešity. Poradíte?
    Tak tedy: Sešit, jenž chcete použít jako globální šablonu, uložte pod názvem Sešit.xlt do složky XLStart. Zpravidla (Windows 98) se jedná o cestu C:\WINDOWS\Application Data\Microsoft\Excel\XLStart. Více v nápovědě Excelu.
  6. Ve složce C:\WINDOWS\Application Data\Microsoft\Excel se mi usadil soubor "Xlusrgal.xls". Mohu jej otevřít? Bojím se makrovirů.
    Bát se pravděpodobně nemusíte. Alespoň podle názvu jde o sešit se sbírkou grafů, které jste vy nebo někdo jiný na daném počítači v Excelu vytvořili jako "Vlastní typ" (Dialog Typ grafu / karta Vlastní typy / Výběr: Definované uživatelem.
  7. Když klepnu na soubor s koncovkou XLS v Total Commanderu, tak se mi v Excelu 2000 nezobrazí v seznamu naposledy otevřených souborů.
    Mám podobnou zkušenost, ale neznám odpověď. Po výměně názorů s Christianem Ghislerem (autor onoho manažera souborů) se oba přikláníme k tomu, že na vině je Excel.
  8. Potřebuju z místa A (PC doma) aktualizovat sešit Excelu v místě B (PC ve firmě). Samotný sešit je ale velmi velký. Lze posílat třeba emailem jen změny?
    Pominu teď hledání příčiny, proč je daný sešit velký. Nebudu se ani vyjadřovat o možnostech FTP a přístupu z internetu do intranetu. Naznačím jen hlavní myšlenku možného řešení. Na obou místech je třeba mít "mateřský" sešit se základními daty. Posílat pak bude třeba jen sešity s aktualizacemi a využívat volby Nástroje / Porovnat a sloučit sešity (resp. v Excelu 97 volba Nástroje / Sloučení sešitů). Aktualizovanými údaji jsou zpravidla primitivní data (text, čísla). Možností je tedy také klasický import/export, případně ošetřený i programově.
  9. Podepisujete digitálně Vaše sešity? Jsou podepsané sešity opravdu bezpečné?
    Digitální podpis (certifikát) vystavují buď věrohodné společnosti za poplatek, nebo i vy sám si můžete zkusit utilitky Selfcert a Makecert z adresáře Office (možná je teprve budete muset doinstalovat z CD Microsoft Office. Takové certifikáty si ale může vystavit každý a důvěryhodnost je fuč. Podepisování probíhá v editoru VBA (z menu Tools / Digital Signature) nebo v samotném Excelu (v Excelu XP Nástroje / Možnosti / Zabezpečení). Certifikát je šifrován a co je v přesně v něm, nevím. Je to pravděpodobně směs informací o celém systému, hardwaru, softwaru, uživatelské informace...
    Certifikáty jsou propojené se systémem a především s Internet Explorerem (Nástroje / Možnosti Internetu / karta Obsah, tlačítko Certifikáty; certifikát použitelný pro Excel by dle mých zkušeností měl být v dialogu Správce certifikátů umístěn na kartě Osobní). Je to dost komplikované a já to po týdnu a myšlence na běžné uživatele jednoduše zabalil (Selfcert mi nefungoval, takže jsem certifikáty musel tvořit z příkazového řádku pro Makecert a učinil jsem hodně pokusů, než se certifikát "ujal", i když z prostého důvodu neznalosti). Makroviry navíc dnes nejsou v popředí zájmu autorů virů. Ode mne se prostě podepsaných souboru nedočkáte. (Pokud vám přijde podepsaný sešit, místo dialogu "Povolit/Nepovolit" se zobrazí trochu jiné okno s informací o podpisu a v dialogu je také volba typu "Příště důvěřovat". Po úplnost uvádím vzor souboru "pro_makecert.bat", který musí ležet ve stejném adresáři, jako samotný makecert.exe a signer.dll (pozor na dosovskou" češtinu, proměnné jsou název_certifikátu a nazev_souboru):
    MakeCert -sk myNewKey -n "CN=nazev_certifikatu" -ss my nazev_souboru.cer 
    MakeCert -is my -ic nazev_souboru.cer -ss anotherStore
    
    Certfikát Správce certifikátů
  10. Jakým způsobem vytvořím v Excelu odkaz na soubor, obrázek apod.?
    Na výběr máte v zásadě dvě možnosti.

    A) Vložený objekt:

    1. Zvolit menu Vložit / Objekt.
    2. Přepnout se na kartu Vytvořit ze souboru a s pomocí tlačítka Procházet vyhledat soubor.
    3. Zaškrtnout Vytvořit propojení a Zobrazit jako ikonu (jestliže nevytvoříte propojení, bude odkaz ukazovat na kopii objektu vyskytující se "bůhvíkde" v adresáři TEMP).
    4. Potvrdit volby.
    Vložit objekt

    Klepnutím na odkaz se otevře soubor programem, jemuž je přiřazena koncovka souboru.

    B) Hypertextový odkaz:

    1. Zvolit Vložit / Hypertextový odkaz.
    2. Excel 97: Zvolit Propojit se souborem nebo adresou URL. Excel 2000 a novější: Jako Odkaz na: označit Existující soubor nebo webová stránka.
    3. Definovat soubor pro odkaz. Pokud soubor v dialogu Excelu 97 není vidět, je třeba vybrat v okénku Soubory typu: všechny soubory (*.*).
    4. Potvrdit volby.
    Hypertextový odkaz

    Klepnutím na odkaz se otevře soubor programem, jemuž je přiřazena koncovka souboru.

    Pozn. Varovné oznámení Excelu po kliknutí na odkaz lze skrýt je při nastavení nízké úrovně zabezpečení.

  11. Lze do záhlaví sešitu umístit odkaz na buňku?
    Není možné to udělat přímo (už tak trvalo, než vývojáře napadlo doplnit možnosti záhlaví o cestu k souboru...) První z řešení spočívá v použití volby Soubor / Vzhled stránky / karta List a volba Nahoře opakovat řádky, druhé pak v sestavení makra pro objekt ThisWorkBook a událost BeforePrint. V daném případě se umístí do levé části záhlaví obsah buňky G16.
    Private Sub Workbook_BeforePrint(Cancel As Boolean)
        ActiveSheet.PageSetup.LeftFooter = Range("G16")
    End Sub
    
  12. Potřebuji tisknout oblasti z různých listů na jeden papír A4. Je to možné?
    Řešení vychází z finty:
    1. Vyberte první oblast pro tisk.
    2. S přidržením klávesy Shift zvolte z menu Úpravy volbu Kopírovat obrázek..., ponechte přitom výchozí nastavení (Vzhled: Jako na obrazovce, Formát: Obrázek) a potvrďte volbu.
    3. Na novém listu vložte obsah schránky pomocí Ctrl+V (dojde k vložení vektorového obrázku oblasti).
    4. Opakujte postup u druhé oblasti a obsah schránky nakopírujte pod obraz první.
    5. Upravte velikost a umístění obrázků tak, aby se vešly do formátu A4 (Manipulaci byste měl provádět při zaškrtnutém políčku Zamknout poměr stran v menu Formát / Obrázek / Velikost).
    6. Vytiskněte tento list.

    Pozn. Takový obrázek může být dynamicky propojen s původním zdrojem, postačí při vybraném obrázku do řádku vzorců napsat odkaz (např. =List1!C4:F10)!

  13. Rád bych obarvil buňky, které představují půlhodinové časové bloky na základě zadaného času.
    Nejsnazší je následující postup: Do daných buněk zaneste čas, který představují a volte formát ";;;". Dále aplikujte podmíněné formátování dle obrázku. Čas počáteční a koncový je uložen v buňkách B1 a AA1.
    Hodinový rozvrh
  14. Viděl jsem Váš příklad na sčítání čísel v buňce. Lze také sčítat písmena a jak?
    Ano jistě. Pro tuto chvíli si zjednodušíme úlohu a nebudeme bádat, co je znak, co písmeno. Nemusíme ani vytvářet vlastní funkci od začátku. Bez přemýšlení prostě zkopírujte následující kód do libovolného modulu v okně editoru VBA a v listu pak pro zjištění počtu znaků např. v buňce A5 použijte zadání = AlfaPocet(A5). Pozn. Funkce využívá API.
    Public Declare Function IsCharAlpha Lib "user32" Alias _
          "IsCharAlphaA" (ByVal cChar As Byte) As Long
    
    Function AlfaPocet(Retezec)
       Dim i As Long
       AlfaPocet = 0
       For i = 1 To Len(Retezec)
          If IsCharAlpha(Asc(Mid(Retezec, i, 1))) > 0 Then
             AlfaPocet = AlfaPocet + 1
          End If
       Next i
    End Function
    
  15. Často potřebuji zjistit poslední hodnotu ve sloupci. Poradíte, jak vytvořit funkci?
    Myslím, že by Vám stačila má vlastní, již hotová funkce. Stačí následující kód překopírovat do modulu sešitu a kdekoliv v buňce listu pak například pro sloupec A použít funkci ve tvaru = POSLOUPCI("A")
    Function POSLOUPCI(Sloupec As String)
       Dim RetSl As String
       Dim PosBunka As Range
       Application.Volatile True
       RetSl = Sloupec & ":" & Sloupec
       Set PosBunka = Range(RetSl).Cells(Range(RetSl).Cells.Count)
       If IsEmpty(PosBunka) Then Set PosBunka = PosBunka.End(xlUp)
       POSLOUPCI = PosBunka
    End Function
    
  16. Posílám sešit kolegovi do zahraničí a bojím se, že by nemusel přečíst na místním počítači diakritiku, proto se snažím zbavit text v Excelu háčků a čárek. Jde to provést najednou?
    Obavám se, že už z principu nikoliv. Myslím tím hlavně případy použití vzorců a ověření, kdy není vůbec jednoduché vytvořit algoritmus pro vyhledávání a odstraňování té "správné" diakritiky. Jak posoudit třeba takové slovo PRŮMĚR? Je to jen slovo, nebo funkce? Snad Vám pomůže alespoň následující makro, které odstraní diakritiku u čistě textových buněk.
    Sub Odcesti()
       Dim Bunka As Range
       Dim Oblast As Range
       Dim PoleS()
       Dim PoleBez()
    
       Application.ScreenUpdating = False
    
       PoleS = Array("Ä", "Á", "Č", "Ď", "É", "Ě", "Í", "Ĺ", _
       "Ň", "Ö", "Ó", "Ř", "Š", "Ť", "Ü", "Ú", "Ů", "Ý", "Ž", _
       "ä", "á", "č", "ď", "é", "ě", "í", "ĺ", "ň", "ö", "ó", _
       "ř", "š", "ť", "ü", "ú", "ů", "ý", "ž")
       PoleBez = Array("A", "A", "C", "D", "E", "E", "I", "L", _
       "N", "O", "O", "R", "S", "T", "U", "U", "U", "Y", "Z", _
       "a", "a", "c", "d", "e", "e", "i", "l", "n", "o", "o", _
       "r", "s", "t", "u", "u", "u", "y", "z")
    
       For Each Bunka In ActiveSheet.UsedRange
          If (Not Bunka.HasFormula) And (Not HasValidation(Bunka)) Then
             If Oblast Is Nothing Then Set Oblast = Bunka
             Set Oblast = Union(Oblast, Bunka)
          End If
       Next Bunka
    
       For i = 0 To 37
          Oblast.Replace What:=PoleS(i), Replacement:=PoleBez(i), _
    	      LookAt:=xlPart, SearchOrder:=xlByColumns, MatchCase:=True
       Next i
    
       Application.ScreenUpdating = False
    
    End Sub
    
  17. Potřebuji vést jakousi historii vstupů do buňky (B5). Nezkoušel jste dělat něco podobného?
    Pokud vstupů nebude příliš mnoho a nepotřebujete je dále zpracovávat, pak Vám následující kód umožní po každé změně buňky přidat hodnotu do jejího komentáře. Dotvořit si můžete samostatně ještě počítadlo, které Vám obsah komentáře po daném počtu vstupů vygumuje.
    Private Sub Worksheet_Change(ByVal Target As Range)
    
       Dim Bunka As Range
       Set Bunka = Range("B5")
    
       If Union(Target, Bunka).Address = Bunka.Address Then
          With Bunka
             On Error Resume Next
             StaryText = .Comment.Text & vbLf
             NovyText = .Text
             If Err <> 0 Then .AddComment
             .Comment.Text StaryText & NovyText
             .Comment.Shape.TextFrame.AutoSize = True
          End With
       End If
    
    End Sub	
  18. Kolega používá pro zadávání vzorce do Excelu znaménko "+". Po zadání +D3/24/3600 se vzorec automaticky přepíše na =+D3/0,00666666666666667, což vrací neočekávaný výsledek. Kde je chyba?
    Takové chování jsem zjistil u Excelu 2000 a Excelu XP. Excel 97 se chová k danému zadání korektně. Chyba je někde v Excelu. Osobně si myslím, že na vině je věčná snaha Excelu zachovat jistou loajálnost k aplikaci Lotus 1-2-3. Nemám jiné rozuzlení, než se v Excelu držet striktního zadávání vzorce s použitím znaménka "=".
  19. Na základě změny buňky ve sloupci B potřebuji vložit do odpovídající buňky sloupce A aktuální datum. Funkce DNES naneštěstí přepíše datumy vždy po otevření sešitu.
    Přepočet listu je jedním z největších oříšků pro programátora. Nejsnazší cesta je v použití události listu Change a umístění aktuálního data makrem (vše probíhá automaticky).
    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
        Dim NasCil As Range
        Set NasCil = Range("B:B")
        If Union(NasCil, Target).Address = NasCil.Address Then
            Target.Offset(0, -1) = Date
        End If
    End Sub
    
  20. Připadám si hloupě, ale kde se v Excelu zadává heslo pro otevření souboru?
    Nastavení Excelu v jednotlivých verzích připomínají "škatulata hejbejte se" a nabídky jsou víc a víc roztahanější. Na výběr máte dvě možnosti. Heslo zadejte v menu Nástroje / Možnosti, karta Zabezpečení (Excel XP) nebo při ukládání v dialogu Uložit jako zvolte nabídku Nástroje / Obecné možnosti (Excel 2000, XP).
    Heslo pro otevření souboru

Dárky

exceltoweb.xls Rychlý převodník výběru buněk do čisté formy HTML se zachováním základních vlastností.
hra_logik.xls Trochu netradiční použití znalostí o Excelu ve stejnojmenné hře.
kalendar_rocni.xls Výrobník celoročního kalendáře. Stačí nastavit barevnost, okopírovat jako obrázek a uložit jako pozadí...
kondiciogram.xls Jáchyme, snad je ten generátor v pořádku...
obsah_slozky.xls Pomůcka pro stromový výpis obsahu složky.
penezni_denik.xls Alternativa klasické tištěné knížky.

Soutěž

Kategorie A: Nejlepší freewarová pomůcka Excelu

Soutěžící souhlasí se zveřejněním práce na stránkách officir.web3.cz a nabídnutí pomůcky pro volné užití (kategorie freeware). Maximální velikost sešitu, resp. kolekce zaslaných sešitů je 120 kB.

Kategorie B: Nejlepší vlastní funkce

Soutěžící souhlasí se zveřejněním kódu funkce na stránkách officir.web3.cz a nabídnutí funkce pro volné užití (kategorie freeware). Do soutěže je zasílán výpis kódu funkce spolu s instrukcemi pro použití a příkladem. Pokud by názornost nebyla dostatečná, je možné zaslat sešit Excelu s přiloženou funkcí. Maximální velikost zaslaného sešitu je 40 kB.

Kategorie C: Nejlepší design v Excelu

V této kategorii zvítězí ta práce, jejíž "štábní kultura" bude tou nejlepší. Posuzována bude přehlednost a optický dojem (tabulky, grafu). Design nesmí omezovat funkčnost a velikost souboru. Přijímány jsou pouze sešity s velikostí do 80 kB.

Soutěžící souhlasí se zveřejněním grafických prvků práce na stránkách officir.web3.cz. Podmínkou není nabídnutí práce jako celku pro volné použití.

Ceny

Ceny jsou pro všechny kategorie stejné a udělují se pro první tři místa.
  1. Jednoměsíční bezplatné poradenství na téma Excel formou elektronické korespondence a obecný doplněk Offset Universal 1.0.
  2. Obecný doplněk Offset Universal 1.0.1
  3. CD Officír na cestách.1

1 podrobnosti o produktu naleznete na officir.web3.cz

Komentář

Soutěže se může účastnit osoba mladší 21 let. Autor si vyhrazuje právo udělit zvláštní cenu. Práce do desátého místa v každé kategorii budou s komentářem vystaveny na stránkách officir.web3.cz, další dle úvahy. Ceny nejsou vynutitelné. Účast je možná pro každého pouze v jedné kategorii a s jedním příspěvkem.

Přihláška do soutěže

Soutěž probíhá formou zaslání emailu (s přílohou) na adresu officir.soutez@seznam.cz. Přílohy mohou být obsaženy ve formě volných sešitů (xls, xlt, xla, verze 97 a novější) i ve sbalené formě (zip). Jiná forma přílohy se nepřipouští. Každá přihláška musí obsahovat mimo jiné plné jméno autora, věk, kontaktní informace, kategorii, v níž hodlá soutěžit, a čestné prohlášení, že práce je jeho dílem. Datum ukončení soutěže je: 7. 1. 2005. Zprávy datované později nebudou stejně jako ostatní neplatné přihlášky zařazeny do soutěže. Vyhlášení je plánováno v druhé polovině ledna.

Sešity Excelu s uvedenými příklady (komprese ZIP)

Officír pro časopis CHIP.