Vlastní funkce

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:

  1. Otevřete Excel s potřebným sešitem, ve kterém chceme použít vlastní funkci
  2. Pomocí příkazu Nástroje – Makro – Editor přejděte do editoru Visual Basic (Alt + F11)
  3. Klikněte pravým tlačítkem na projekt sešitu např.: VBAProject(Funkce.xls)
  4. Pomocí příkazu Insert – Module vložte nový modul VBA
  5. 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:

  1. Musí mít jedinečný název
  2. Nelze pojmenovat vlastní funkci stejně jako vestavěnou funkci Excelu
  3. Nelze použít název shodný s adresou buňky (např. B2)
  4. Název může obsahovat písmena i číslice + několik interpunkčních znaků, ale první znak musí být písmeno
  5. Lze libovolně kombinovat malé a velké písmena
  6. Název nesmí obsahovat mezery ani tečky. Místo mezer se používá znak podtržení (např. Moje_funkce)
  7. Maximální délka názvu funkce může být 255 znaků
  8. Název funkce nesmí obsahovat tyto znaky: #,$,%,& a !

2 Comments

  1. 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)

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *