Obsah
Dnes budeme pokračovať v skúmaní používateľských funkcií Excelu. Keďže už viete, ako vytvárať UDF (a dúfam, že ste ich aj vyskúšali použiť vo svojom Exceli), poďme trochu hlbšie a naučme sa, ako používať a ukladať používateľské funkcie v Exceli.
Okrem toho vám ukážeme, ako ľahko uložiť funkcie do súboru doplnku programu Excel a neskôr ich použiť niekoľkými kliknutiami.
O čom budeme hovoriť:
Rôzne spôsoby používania UDF v programe Excel
Používanie UDF v pracovných hárkoch
Po overení správneho fungovania UDF ich môžete použiť vo vzorcoch programu Excel alebo v kóde VBA.
Vlastné funkcie môžete v zošite Excelu použiť rovnakým spôsobom ako bežné funkcie. Napríklad stačí napísať do bunky nasledujúci vzorec:
= GetMaxBetween(A1:A6,10,50)
UDF možno použiť v kombinácii s bežnými funkciami. Napríklad pridať text k vypočítanej maximálnej hodnote:
= CONCATENATE("Maximálna hodnota medzi 10 a 50 je ", GetMaxBetween(A1: A6,10,50))
Výsledok si môžete pozrieť na nasledujúcom obrázku:
Môžete nájsť číslo, ktoré je maximálne a zároveň sa nachádza v rozmedzí od 10 do 50.
Overme si ďalší vzorec:
= INDEX(A2:A9, MATCH(GetMaxBetween(B2:B9, F1, F2), B2:B9,0)), the
Vlastná funkcia GetMaxBetween skontroluje rozsah B2:B9 a nájde maximálne číslo medzi 10 a 50. Potom pomocou INDEX + MATCH získame názov produktu, ktorý zodpovedá tejto maximálnej hodnote:
Ako vidíte, používanie vlastných funkcií sa príliš nelíši od bežných funkcií programu Excel.
Pritom nezabudnite, že používateľsky definovaná funkcia môže iba vrátiť hodnotu, ale nemôže vykonávať žiadne iné akcie. Prečítajte si viac o obmedzeniach používateľsky definovaných funkcií.
Používanie UDF v procedúrach a funkciách VBA
UDF možno použiť aj v makrách VBA. Nižšie vidíte kód makra, ktoré hľadá maximálnu hodnotu v rozsahu od 10 do 50 v stĺpci obsahujúcom aktívnu bunku.
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ú funkciu
GetMaxBetween(.Cells, 10, 50)
Nájde maximálnu hodnotu v aktívnom stĺpci. Táto hodnota sa potom zvýrazní. Výsledok makra môžete vidieť na nasledujúcej snímke obrazovky.
Vlastnú funkciu možno použiť aj vo vnútri inej vlastnej funkcie. Na začiatku nášho blogu sme sa venovali problému prevodu čísla na text pomocou vlastnej funkcie s názvom SpellNumber .
S jeho pomocou môžeme získať maximálnu hodnotu z rozsahu a okamžite ju zapísať ako text.
Na tento účel vytvoríme novú vlastnú funkciu, v ktorej použijeme funkcie GetMaxBetween a SpellNumber ktoré sú nám už známe.
Funkcia SpellGetMaxBetween(rngCells As Range, MinNum, MaxNum) SpellGetMaxBetween = SpellNumber(GetMaxBetween (rngCells, MinNum, MaxNum)) End FunctionAko vidíte, GetMaxBetween je argumentom inej vlastnej funkcie, SpellNumber . Definuje maximálnu hodnotu, ako sme to už urobili mnohokrát predtým. Toto číslo sa potom prevedie na text.
Na obrázku vyššie môžete vidieť, ako SpellGetMaxBetween funkcia nájde maximálne číslo medzi 100 a 500 a potom ho prevedie na text.
Volanie UDF z iných zošitov
Ak ste v zošite vytvorili UDF, bohužiaľ to neznamená, že nebudete mať žiadne problémy.
Podľa mojich skúseností si väčšina používateľov skôr či neskôr vytvorí svoju osobnú zbierku makier a vlastných funkcií na automatizáciu jednotlivých procesov a výpočtov. A tu vzniká problém - kód používateľsky definovaných funkcií vo Visual Basicu je potrebné niekde uložiť, aby sa dal neskôr použiť pri práci.
Ak chcete použiť vlastnú funkciu, musí byť v programe Excel otvorený zošit, v ktorom ste ju uložili. Ak nie je, pri pokuse o jej použitie sa zobrazí chyba #NAME! Táto chyba znamená, že program Excel nepozná názov funkcie, ktorú chcete použiť vo vzorci.
Pozrime sa na spôsoby, akými môžete používať vytvorené vlastné funkcie.
Metóda 1. Pridanie názvu zošita do funkcie
Pred názvom funkcie môžete zadať názov zošita, v ktorom sa nachádza. Ak ste napríklad uložili vlastnú funkciu GetMaxBetween() v zošite s názvom My_Functions.xlsm , potom musíte zadať nasledujúci vzorec:
= My_Functions.xlsm!GetMaxBetween(A1:A6,10,50)
Metóda 2. Uloženie všetkých UDF do jedného spoločného súboru
Uložiť všetky vlastné funkcie do jedného špeciálneho zošita (napríklad, My_Functions.xlsm ) a v prípade potreby z neho skopírujte požadovanú funkciu do aktuálneho zošita.
Pri každom vytvorení novej vlastnej funkcie je potrebné duplikovať jej kód v zošite, v ktorom ju budete používať. Pri tomto spôsobe môže vzniknúť niekoľko nepríjemností:
- Ak existuje veľa pracovných súborov a funkcia je potrebná všade, potom sa kód musí skopírovať do každej knihy.
- Nezabudnite zošit uložiť vo formáte s podporou makier (.xlsm alebo .xlsb).
- Pri otvorení takéhoto súboru ochrana proti makrám zakaždým zobrazí upozornenie, ktoré je potrebné potvrdiť. Mnohí používatelia sa zľaknú, keď uvidia upozornenie so žltým pruhom, ktoré ich žiada o povolenie makier. Ak sa chcete vyhnúť zobrazeniu tohto hlásenia, musíte ochranu programu Excel úplne vypnúť. To však nemusí byť vždy správne a bezpečné.
Myslím, že so mnou budete súhlasiť, že neustále otváranie súboru a kopírovanie kódu užívateľsky definovaných funkcií z neho alebo zapisovanie názvu tohto súboru do vzorca nie je najlepším riešením. preto sme dospeli k tretiemu spôsobu.
Metóda 3. Vytvorenie súboru doplnku programu Excel
Myslím, že najlepším spôsobom je uložiť často používané vlastné funkcie do súboru doplnku programu Excel. Výhody používania doplnku:
- Doplnok musíte pripojiť k programu Excel len raz. Potom môžete jeho postupy a funkcie používať v ľubovoľnom súbore v tomto počítači. Nemusíte ukladať zošity vo formátoch .xlsm a .xlsb, pretože zdrojový kód nebude uložený v nich, ale v súbore doplnku.
- Ochrana makier vás už nebude obťažovať, pretože doplnky vždy odkazujú na dôveryhodné zdroje.
- Doplnok je samostatný súbor. Je ľahké ho prenášať z počítača do počítača, zdieľať ho s kolegami.
O vytváraní a používaní doplnku budeme hovoriť neskôr.
Používanie doplnkov na ukladanie vlastných funkcií
Ako si môžem vytvoriť vlastný doplnok? Prejdime si tento postup krok za krokom.
Krok 1. Vytvorenie súboru doplnku
Otvorte program Microsoft Excel, vytvorte nový zošit a uložte ho pod ľubovoľným vhodným názvom (napríklad My_Functions) vo formáte doplnku. Na tento účel použite ponuku Súbor - Uložiť ako alebo klávesom F12. Nezabudnite zadať typ súboru Doplnok programu Excel :
Váš doplnok bude mať príponu .xlam.
Tip. Upozorňujeme, že Excel štandardne ukladá doplnky do C:\Users\[Vaše_meno]\AppData\Roaming\Microsoft\AddIns priečinok. Odporúčam, aby ste prijali predvolené umiestnenie. Ak chcete, môžete určiť akýkoľvek iný priečinok. Potom však pri pripájaní doplnku budete musieť nájsť a určiť jeho nové umiestnenie ručne. Ak ho uložíte do predvoleného priečinka, nemusíte doplnok v počítači hľadať. Excel ho automaticky uvedie v zozname.
Krok 2. Pripojenie súboru doplnku
Teraz je potrebné, aby bol nami vytvorený doplnok pripojený k programu Excel. Potom sa načíta automaticky pri spustení programu. Ak to chcete urobiť, použite ponuku Súbor - Možnosti - Doplnky . Uistite sa, že Doplnky aplikácie Excel je vybraný v Spravujte stránku Kliknite na pole. Prejsť na stránku v spodnej časti okna. V okne, ktoré sa zobrazí, označte náš doplnok My_Functions. Ak ho v zozname nevidíte, kliknite na tlačidlo Prehľadávať a prejdite na umiestnenie súboru doplnku.
Ak používate doplnok na ukladanie vlastných funkcií, je potrebné dodržiavať jedno jednoduché pravidlo. Ak prenášate zošit iným ľuďom, nezabudnite preniesť aj kópiu doplnku, ktorý obsahuje požadované funkcie. Mali by ho pripojiť rovnakým spôsobom ako teraz.
Krok 3. Pridanie vlastných funkcií a makier do doplnku
Náš doplnok je pripojený k programu Excel, ale zatiaľ nemá žiadnu funkciu. Ak do neho chcete pridať nové moduly UDF, otvorte Editor jazyka Visual Basic stlačením klávesov Alt + F11 . Potom môžete pridať nové moduly pomocou kódu VBA, ako je popísané v mojom návode na vytvorenie modulov UDF.
Vyberte svoj súbor doplnku ( My_Finctions.xlam ) v okne VBAProject. Použite Vloženie - Modul menu na pridanie vlastného modulu. Musíte do neho zapísať vlastné funkcie.
Kód funkcie definovanej používateľom môžete zadať ručne alebo ho odniekiaľ skopírovať.
To je všetko. Teraz ste vytvorili vlastný doplnok, pridali ho do programu Excel a môžete v ňom používať UDF. Ak chcete používať ďalšie UDF, stačí napísať kód v module doplnku v editore VBA a uložiť ho.
To je pre dnešok všetko. Naučili sme sa, ako používať používateľom definované funkcie v zošite. Pevne dúfame, že vám tieto pokyny pomôžu. Ak máte nejaké otázky, napíšte ich do komentárov k tomuto článku.