Výhody a nevýhody vlastních funkcí v aplikaci Excel

  • Sdílet Toto
Michael Brown

Pokračujeme v seriálu návodů o uživatelsky definovaných funkcích. V předchozích článcích jsme se seznámili s uživatelskými funkcemi a naučili se je vytvářet a používat. V tomto návodu se podíváme na specifika používání těchto funkcí a uvidíme rozdíly mezi UDF a makry VBA.

V tomto kurzu se naučíme následující:

    Doufáme, že tento článek rozšíří vaše znalosti o UDF a pomůže vám je ještě efektivněji používat v sešitech aplikace Excel.

    Je UDF a Makro totéž?

    Uživatelem definované funkce i makra VBA se vytvářejí pomocí editoru VBA. Jaký je mezi nimi rozdíl a čemu dát přednost?

    Nejdůležitějším rozdílem je, že funkce provádí výpočet a makro provádí nějakou akci. Uživatelem definovaná funkce, stejně jako běžná funkce Excelu, musí být zapsána v buňce. Výsledkem jejího provedení je vrácení nějaké hodnoty. Zároveň není možné měnit hodnoty jiných buněk, stejně jako některé vlastnosti aktuální buňky (zejména,Formátování). Ve vzorcích podmíněného formátování však můžete použít vlastní funkci.

    UDF a makro VBA pracují různými způsoby. Například při vytváření UDF v editoru Visual Basicu začínáte příkazem Funkce a končí Konec funkce Při záznamu makra začínáte příkazem Sub a končí End Sub.

    Ne všechny operátory jazyka Visual Basic lze použít k vytvoření UDF. Z tohoto důvodu je makro univerzálnějším řešením.

    Na rozdíl od uživatelsky definované funkce nevyžaduje makro od uživatele žádné argumenty (ani je nemůže přijímat).

    Jde o to, že některé příkazy maker mohou používat adresy buněk nebo formátovací prvky (například barvu). Pokud přesouváte buňky, přidáváte nebo odebíráte řádky a sloupce, měníte formát buněk, pak můžete svá makra snadno "rozbít". To je možné zejména tehdy, pokud sdílíte svůj soubor s kolegy, kteří nevědí, jak vaše makra fungují.

    Máte například soubor s dokonale fungujícím makrem. Tento vzorec vypočítá procenta buněk A1 až A4. Makro změní barvu těchto buněk na žlutou. V aktivní buňce je nastaven formát procent.

    Pokud se vy nebo někdo jiný rozhodne vložit nový řádek, makro bude pokračovat v hledání hodnoty v buňce A4 (parametr 4,1 ve vašem UDF), selže a vrátí chybu:

    V tomto případě došlo k chybě v důsledku dělení nulou (v nově přidaném řádku není žádná hodnota). V případě, že makro provede řekněme součet, pak jednoduše dostanete chybný výsledek. O tom se však nedozvíte.

    Na rozdíl od maker nemohou uživatelsky definované funkce takovou nepříjemnou situaci způsobit.

    Níže vidíte provedení stejných výpočtů pomocí UDF. Zde můžete zadat vstupní buňky kdekoli v pracovním listu a při jejich změně nebudete čelit žádným neočekávaným problémům.

    V jazyce C3 jsem napsal následující vzorec:

    =UDF_vs_Macro(A1,A4)

    Pak jsem vložil prázdný řádek a vzorec se změnil, jak vidíte na obrázku výše.

    Nyní můžeme vstupní buňku nebo buňku s funkcí přesunout kamkoli. Výsledek bude vždy správný.

    Další výhodou používání UDF je, že se automaticky aktualizují, když se změní hodnota ve vstupní buňce. Při používání maker musíte vždy zajistit, aby byla všechna data aktuální.

    S ohledem na tento příklad bych raději používal UDF všude, kde je to možné, a makra bych používal pouze pro ostatní činnosti, které nejsou spojené s výpočty.

    Omezení a nevýhody používání UDF

    O výhodách UDF jsem se již zmínil výše. Zkrátka a dobře, dokáže provádět výpočty, které nejsou možné pomocí standardních funkcí Excelu. Navíc dokáže ukládat a používat dlouhé a složité vzorce, které se změní na jedinou funkci. A vy nebudete muset psát složité vzorce stále dokola.

    Nyní se podrobněji věnujme nedostatkům UDF:

    • Vytváření UDF vyžaduje použití jazyka VBA. Nelze to nijak obejít. To znamená, že uživatel nemůže zaznamenat UDF stejným způsobem jako makro Excelu. UDF musíte vytvořit sami. Můžete však do své funkce zkopírovat a vložit části kódu dříve zaznamenaného makra. Musíte si jen uvědomit omezení vlastních funkcí.
    • Další nevýhodou UDF je, že stejně jako každá jiná funkce Excelu může do buňky vrátit pouze jednu hodnotu nebo pole hodnot. Jednoduše provádí výpočty, nic víc.
    • Pokud chcete sdílet svůj sešit s kolegy, nezapomeňte své UDF uložit do stejného souboru. Jinak jim vaše vlastní funkce nebudou fungovat.
    • Vlastní funkce vytvořené pomocí editoru VBA jsou pomalejší než běžné funkce. To je patrné zejména u velkých tabulek. Bohužel je VBA zatím velmi pomalý programovací jazyk. Proto pokud máte hodně dat, snažte se pokud možno používat standardní funkce nebo vytvářet UDF pomocí funkce LAMBDA.

    Omezení vlastní funkce:

    • UDF jsou určeny k provádění výpočtů a vracení hodnot. Nelze je používat místo maker.
    • Nemohou měnit obsah jiných buněk (pouze aktivní buňky).
    • Názvy funkcí musí dodržovat určitá pravidla. Nelze například použít název, který se shoduje s nativním názvem funkce aplikace Excel nebo s adresou buňky, například AB123.
    • Vaše vlastní funkce nesmí v názvu obsahovat mezery, ale může obsahovat znak podtržítka. Upřednostňuje se však použití velkých písmen na začátku každého nového slova (například GetMaxBetween).
    • UDF nemůže kopírovat a vkládat buňky do jiných oblastí pracovního listu.
    • Nemohou měnit aktivní pracovní list.
    • UDF nemohou měnit formátování v aktivní buňce. Pokud chcete změnit formátování buňky při zobrazení různých hodnot, měli byste použít podmíněné formátování.
    • Nemohou otevřít další knihy.
    • Nelze je použít ke spouštění maker pomocí Application.OnTime.
    • Uživatelem definovanou funkci nelze vytvořit pomocí makrozáznamníku.
    • Funkce se nezobrazují v Vývojář> Makra dialog.
    • Vaše funkce se zobrazí v dialogovém okně ( Insert> Funkce ) a v seznamu funkcí pouze tehdy, pokud jsou deklarovány jako Veřejnost (pokud není uvedeno jinak, je to výchozí nastavení).
    • Všechny funkce deklarované jako Soukromé se v seznamu funkcí nezobrazí.

    Poměrně pomalý provoz a některá omezení při používání vás mohou přimět k zamyšlení: "K čemu jsou tyto vlastní funkce?"

    Mohou se hodit, a také se hodí, pokud si uvědomíme omezení, která jsou na ně kladena. Pokud se naučíte správně vytvářet a používat UDF, můžete si napsat vlastní knihovnu funkcí. To výrazně rozšíří vaše možnosti práce s daty v Excelu.

    Pro mě jsou vlastní funkce velkou úsporou času. A co vy? Už jste si zkusili vytvořit vlastní UDF? Líbilo se vám to víc než základní funkce Excelu? Diskutujme v komentářích :)

    Michael Brown je oddaný technologický nadšenec s vášní pro zjednodušování složitých procesů pomocí softwarových nástrojů. S více než desetiletými zkušenostmi v technologickém průmyslu zdokonalil své dovednosti v aplikacích Microsoft Excel a Outlook a také v Tabulkách a Dokumentech Google. Michaelův blog je věnován sdílení jeho znalostí a odborných znalostí s ostatními a poskytuje snadno pochopitelné tipy a návody pro zlepšení produktivity a efektivity. Ať už jste zkušený profesionál nebo začátečník, Michaelův blog nabízí cenné postřehy a praktické rady, jak tyto základní softwarové nástroje co nejlépe využít.