Pro informace o výuce Excelu klikněte zde
Toto je návod, jak používat vlastní funkce, které najdete na těchto stránkách, případně kdekoli na internetu.
Excel má přes 300 vestavěných funkcí (Excel 2000 jich má přesně 327)
Excel dále umožňuje vytvářet vlastní funkce uživatelsky definované funkce – UDF, pomocí Visual Basic for Applications (VBA)
Pokud je k dispozici tolik funkcí, tak proč vytvářet a používat další?
Několik důvodů:
1. Zkrácení vzorce (vzorce jsou jednodušší a lépe se s nimi pracuje)
2. I při tolika funkcích občas potřebujete takovou, kterou v Excelu nenajdete
Nevýhody UDF funkcí – ve většině případu jsou mnohem pomalejší než vestavěné funkce Excelu.
Příklad 1:
Potřebujeme funkci na vrácení čísla týdne dle normy ISO. Po doinstalování analytických nástrojů můžeme vložit funkci WEEKNUM, která je v kategorii analýza času. Ta nám ale vrací číslo týdne dle americké normy.
Máme dvě možnosti
1. Použít tzv. supervzorec
=CELÁ.ČÁST((A1-SUMA(MOD(DATUM(ROK(A1-MOD(A1-2;7)+3);1;2);{1E+99;7})*{1;-1})+5)/7)
kde datum je v buňce A1
2. použít vlastní funkci
Public Function ISOWeeknum(d1 As Date) As Integer 'vrátí č. týdne podle ISO ISOWeeknum = DatePart("ww", d1, vbMonday, vbFirstFourDays) If ISOWeeknum > 52 Then If DatePart("ww", d1 + 7, vbMonday, vbFirstFourDays) = 2 Then ISOWeeknum = 1 End If End If End Function
Poté stačí zadat do buňky vzorec ve tvaru: =ISOWeeknum(A1)
Příklad 2:
Funkce na vrácení zkratky počátečních písmen.
Např. Radek Jureček vrátí jako R J
Function InicialyRJ(txt As String) As String 'Vrátí zkratku tvořenou počátečními písmeny slov Dim Zkr, i As Integer Zkr = Split(Application.Trim(txt), " ") For i = 0 To UBound(Zkr) InicialyRJ = InicialyRJ & " " & Left(Zkr(i), 1) Next i InicialyRJ = UCase(Application.Trim(InicialyRJ)) End Function
Jak zkopírovat tyto i jiné funkce do sešitu:
- Otevřete Excel s potřebným sešitem, ve kterém chceme použít vlastní funkci
- Pomocí příkazu Nástroje – Makro – Editor přejděte do editoru Visual Basic (Alt + F11)
- Klikněte pravým tlačítkem na projekt sešitu např.: VBAProject(Funkce.xls)
- Pomocí příkazu Insert – Module vložte nový modul VBA
- Do okna kódu (modulu) zkopíruje potřebnou funkci
V listech sešitu, do jehož modulu máme potřebný kód, můžete volat funkci pomocí příkazu Vložit funkce – Vlastní, nebo přímým zapsáním názvu funkce.
Pokud chceme používat určité funkce ve všech naších sešitech, je nejlepším způsobem uložit sešit s vlastními funkcemi jako doplněk a ten nainstalovat. Více o vytváření doplňků zde
Další funkce dostupné na těchto stránkách:
Funkce ProhoditJmena a OtocitSlovaVeVete zde
Funkce SumaPresListy zde
Funkce RJNazevListu a RJNazevListu2 zde
A na závěr pravidla pro vytvoření názvu funkce:
- Musí mít jedinečný název
- Nelze pojmenovat vlastní funkci stejně jako vestavěnou funkci Excelu
- Nelze použít název shodný s adresou buňky (např. B2)
- Název může obsahovat písmena i číslice + několik interpunkčních znaků, ale první znak musí být písmeno
- Lze libovolně kombinovat malé a velké písmena
- Název nesmí obsahovat mezery ani tečky. Místo mezer se používá znak podtržení (např. Moje_funkce)
- Maximální délka názvu funkce může být 255 znaků
- Název funkce nesmí obsahovat tyto znaky: #,$,%,& a !
Dobry den,
zaujal me Vas vzorec na vypocet cisla tydne. Je mnohem lepsi nez moje vlastni funkce, kera 1.1.21 vraci cislo 1, zatimco Vase 53.
Prestoze delam v Excelu mnoho let a myslim, ze ho znam dost dobre, tak Vasemu vzorci (=CELÁ.ČÁST…) nerozumim. Nemuzete me ho prosim vysvetlit? Dekuji Karel
Dobrý den,
funkce CELÁ.ČÁST zaokrouhlí číslo na nejbližší menší celé číslo. Podobně jako funkce USEKNOUT (ta se ale jinak chová při záporných číslech)