Obsah
Dnes budeme pokračovat ve zkoumání uživatelských funkcí Excelu. Protože již víte, jak vytvářet UDF (a doufám, že jste je také vyzkoušeli použít ve svém Excelu), pojďme se ponořit trochu hlouběji a naučit se, jak používat a ukládat uživatelsky definované funkce v Excelu.
Kromě toho vám ukážeme, jak snadno uložit funkce do souboru doplňku aplikace Excel, abyste je mohli později použít na několik kliknutí.
O čem budeme mluvit:
Různé způsoby použití UDF v aplikaci Excel
Použití UDF v pracovních listech
Po ověření správné funkce UDF je můžete použít ve vzorcích aplikace Excel nebo v kódu VBA.
Vlastní funkce můžete v sešitě aplikace Excel použít stejným způsobem jako běžné funkce. Například stačí do buňky napsat následující vzorec:
= GetMaxBetween(A1:A6,10,50)
UDF lze použít v kombinaci s běžnými funkcemi. Například k vypočtené maximální hodnotě přidejte text:
= CONCATENATE("Maximální hodnota mezi 10 a 50 je ", GetMaxBetween(A1: A6,10,50))
Výsledek můžete vidět na snímku obrazovky níže:
Můžete najít číslo, které je zároveň maximální a nachází se v rozmezí od 10 do 50.
Zkontrolujme další vzorec:
= INDEX(A2:A9, MATCH(GetMaxBetween(B2:B9, F1, F2), B2:B9,0)), the
Vlastní funkce GetMaxBetween zkontroluje rozsah B2:B9 a najde maximální číslo mezi 10 a 50. Poté pomocí INDEX + MATCH získáme název produktu, který odpovídá této maximální hodnotě:
Jak vidíte, použití vlastních funkcí se příliš neliší od běžných funkcí aplikace Excel.
Nezapomeňte přitom, že uživatelsky definovaná funkce může pouze vracet hodnotu, ale nemůže provádět žádné jiné akce. Přečtěte si více o omezeních uživatelsky definovaných funkcí.
Použití UDF v procedurách a funkcích VBA
UDF lze použít také v makrech VBA. Níže vidíte kód makra, které ve sloupci obsahujícím aktivní buňku hledá maximální hodnotu v rozsahu od 10 do 50.
Sub MacroWithUDF() Dim Rng As Range, maxcase, i As Long With ActiveSheet.Range(Cells(ActiveCell.CurrentRegion.Row, ActiveCell.Column), Cells(ActiveCell.CurrentRegion.Rows.Count _ + ActiveCell.CurrentRegion.Row - 1, ActiveCell.Column)) maxcase = GetMaxBetween(.Cells, 10, 50) i = Application.Match(maxcase, .Cells, 0) .Cells(i).Interior.Color = vbRed End With End SubKód makra obsahuje vlastní funkci
GetMaxBetween(.Cells, 10, 50)
Najde maximální hodnotu v aktivním sloupci. Tato hodnota se pak zvýrazní. Výsledek makra vidíte na obrázku níže.
Vlastní funkci lze také použít uvnitř jiné vlastní funkce. Dříve jsme se v našem blogu zabývali problémem převodu čísla na text pomocí vlastní funkce s názvem SpellNumber .
S jeho pomocí můžeme získat maximální hodnotu z rozsahu a ihned ji zapsat jako text.
Za tímto účelem vytvoříme novou vlastní funkci, ve které použijeme funkce GetMaxBetween a SpellNumber které jsou nám již známé.
Funkce SpellGetMaxBetween(rngCells As Range, MinNum, MaxNum) SpellGetMaxBetween = SpellNumber(GetMaxBetween (rngCells, MinNum, MaxNum)) End FunctionJak vidíte, GetMaxBetween je argumentem jiné vlastní funkce, SpellNumber . Definuje maximální hodnotu, jak jsme to již mnohokrát dělali. Toto číslo se pak převede na text.
Na výše uvedeném snímku obrazovky vidíte, jak se SpellGetMaxBetween funkce najde maximální číslo mezi 100 a 500 a převede je na text.
Volání UDF z jiných sešitů
Pokud jste v sešitě vytvořili UDF, neznamená to bohužel, že se nebudete potýkat s žádnými problémy.
Podle mých zkušeností si většina uživatelů dříve či později vytvoří svou osobní sbírku maker a uživatelských funkcí pro automatizaci jednotlivých procesů a výpočtů. A zde nastává problém - kód uživatelsky definovaných funkcí ve Visual Basicu je třeba někam uložit, aby se dal později použít při práci.
Chcete-li použít vlastní funkci, musí být v Excelu otevřen sešit, ve kterém jste ji uložili. Pokud tomu tak není, zobrazí se při pokusu o její použití chyba #NAME! Tato chyba znamená, že Excel nezná název funkce, kterou chcete ve vzorci použít.
Podívejme se na způsoby, jakými můžete použít vytvořené vlastní funkce.
Metoda 1. Přidání názvu sešitu do funkce
Před názvem funkce můžete zadat název sešitu, ve kterém se nachází. Například pokud jste uložili vlastní funkci. GetMaxBetween() v sešitě s názvem My_Functions.xlsm , pak je třeba zadat následující vzorec:
= My_Functions.xlsm!GetMaxBetween(A1:A6,10,50)
Metoda 2. Uložení všech UDF do jednoho společného souboru
Uložit všechny vlastní funkce do jednoho speciálního sešitu (například, My_Functions.xlsm ) a v případě potřeby z něj zkopírujte požadovanou funkci do aktuálního sešitu.
Při každém vytvoření nové vlastní funkce je třeba duplikovat její kód v sešitě, ve kterém ji budete používat. Při tomto způsobu může vzniknout několik nepříjemností:
- Pokud je pracovních souborů hodně a funkce je potřeba všude, bude nutné kód zkopírovat do každé knihy.
- Nezapomeňte sešit uložit ve formátu s podporou maker (.xlsm nebo .xlsb).
- Při otevření takového souboru ochrana proti makrům pokaždé zobrazí varování, které je třeba potvrdit. Mnoho uživatelů se vyděsí, když uvidí varování ve žlutém pruhu, které je vyzve k povolení maker. Aby se toto hlášení nezobrazovalo, je třeba ochranu aplikace Excel zcela zakázat. To však nemusí být vždy správné a bezpečné.
Myslím, že se mnou budete souhlasit, že neustále otevírat soubor a kopírovat z něj kód uživatelsky definovaných funkcí nebo psát název tohoto souboru do vzorce není nejlepší řešení. proto jsme dospěli ke třetímu způsobu.
Metoda 3. Vytvoření souboru doplňku aplikace Excel
Myslím, že nejlepším způsobem je uložit často používané vlastní funkce do souboru doplňku aplikace Excel. Výhody použití doplňku:
- Doplněk stačí připojit k aplikaci Excel pouze jednou. Poté můžete jeho procedury a funkce používat v libovolném souboru v tomto počítači. Sešity nemusíte ukládat ve formátech .xlsm a .xlsb, protože zdrojový kód nebude uložen v nich, ale v souboru doplňku.
- Ochrana maker vás již nebude obtěžovat, protože doplňky vždy odkazují na důvěryhodné zdroje.
- Doplněk je samostatný soubor. Lze jej snadno přenášet z počítače do počítače, sdílet s kolegy.
O vytváření a používání doplňku si povíme více později.
Používání doplňků k ukládání vlastních funkcí
Jak vytvořím vlastní doplněk? Projděme si tento postup krok za krokem.
Krok 1. Vytvoření souboru doplňku
Otevřete aplikaci Microsoft Excel, vytvořte nový sešit a uložte jej pod libovolným vhodným názvem (například My_Functions) ve formátu doplňku. K tomu použijte nabídku Soubor - Uložit jako nebo klávesou F12. Nezapomeňte zadat typ souboru. Doplněk aplikace Excel :
Váš doplněk bude mít příponu .xlam.
Tip: Upozorňujeme, že ve výchozím nastavení Excel ukládá doplňky do složky C:\Users\[Vaše_jméno]\AppData\Roaming\Microsoft\AddIns složku. Doporučuji přijmout výchozí umístění. Pokud chcete, můžete zadat jakoukoli jinou složku. Pak ale budete muset při připojování doplňku ručně vyhledat a zadat jeho nové umístění. Pokud jej uložíte do výchozí složky, nemusíte doplněk v počítači hledat. Excel jej automaticky uvede v seznamu.
Krok 2. Připojení souboru doplňku
Nyní je třeba vytvořený doplněk připojit k Excelu. Pak se načte automaticky při spuštění programu. K tomu slouží nabídka Soubor - Možnosti - Doplňky Ujistěte se, že Doplňky aplikace Excel je vybrána v okně Správa pole. Klikněte na Přejít na v dolní části okna. V zobrazeném okně označte náš doplněk My_Functions. Pokud jej v seznamu nevidíte, klikněte na tlačítko Procházet a přejděte do umístění souboru doplňku.
Pokud používáte doplněk pro ukládání vlastních funkcí, je třeba dodržet jedno jednoduché pravidlo. Pokud přenášíte sešit jiným lidem, nezapomeňte přenést také kopii doplňku, který obsahuje požadované funkce. Měli by jej připojit stejným způsobem, jako jste to udělali nyní.
Krok 3. Přidání vlastních funkcí a maker do doplňku
Náš doplněk je připojen k aplikaci Excel, ale zatím nemá žádné funkce. Chcete-li do něj přidat nové moduly UDF, otevřete Editor Visual Basicu stisknutím kláves Alt + F11 . Poté můžete přidat nové moduly pomocí kódu VBA, jak je popsáno v mém výukovém kurzu Vytváření modulů UDF.
Vyberte svůj soubor doplňku ( My_Finctions.xlam ) v okně VBAProject. Použijte příkaz Vložení - Modul menu přidat vlastní modul. Je třeba do něj zapsat vlastní funkce.
Kód uživatelsky definované funkce můžete zadat ručně nebo jej odněkud zkopírovat.
To je vše. Nyní jste vytvořili vlastní doplněk, přidali jej do aplikace Excel a můžete v něm používat UDF. Pokud chcete používat další UDF, stačí napsat kód v modulu doplňku v editoru VBA a uložit jej.
To je pro dnešek vše. Naučili jsme se používat uživatelsky definované funkce v sešitě. Pevně doufáme, že vám tyto pokyny pomohou. Pokud máte nějaké dotazy, napište nám je do komentářů k tomuto článku.