Kazalo
Danes bomo nadaljevali z raziskovanjem uporabniških funkcij Excel-a. Ker že veste, kako ustvariti UDF (in upam, da ste jih tudi že poskusili uporabiti v Excelu), se poglobimo in se naučimo, kako uporabiti in shraniti uporabniško opredeljene funkcije v Excelu.
Poleg tega vam bomo pokazali, kako lahko svoje funkcije preprosto shranite v datoteko dodatka za Excel in jih pozneje uporabite z nekaj kliki.
Pogovarjali se bomo o tem:
Različni načini uporabe UDF v Excelu
Uporaba UDF v delovnih listih
Ko preverite, ali UDF delujejo pravilno, jih lahko uporabite v Excelovih formulah ali kodi VBA.
Funkcije po meri lahko v Excelovem delovnem zvezku uporabljate na enak način kot običajne funkcije. V celico na primer zapišite spodnjo formulo:
= GetMaxBetween(A1:A6,10,50)
UDF lahko uporabljate v kombinaciji z običajnimi funkcijami. Izračunani največji vrednosti lahko na primer dodate besedilo:
= CONCATENATE("Največja vrednost med 10 in 50 je ", GetMaxBetween(A1: A6,10,50))
Rezultat si lahko ogledate na spodnji sliki zaslona:
Poišči število, ki je največje in je v razponu od 10 do 50.
Preverimo še eno formulo:
= INDEX(A2:A9, MATCH(GetMaxBetween(B2:B9, F1, F2), B2:B9,0)), the
Funkcija po meri GetMaxBetween preveri območje B2:B9 in poišče največje število med 10 in 50. Nato z uporabo INDEX + MATCH dobi ime izdelka, ki ustreza tej največji vrednosti:
Kot vidite, se uporaba funkcij po meri ne razlikuje preveč od običajnih funkcij programa Excel.
Pri tem ne pozabite, da lahko uporabniško opredeljena funkcija vrne le vrednost, ne more pa izvajati drugih dejanj. Preberite več o omejitvah uporabniško opredeljenih funkcij.
Uporaba UDF v postopkih in funkcijah VBA
UDF lahko uporabljate tudi v makrojih VBA. Spodaj si lahko ogledate makro kodo, ki v stolpcu z aktivno celico išče največjo vrednost v razponu 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 SubMakro koda vsebuje funkcijo po meri
GetMaxBetween(.Cells, 10, 50)
Poišče največjo vrednost v aktivnem stolpcu. Ta vrednost bo nato poudarjena. Rezultat makra si lahko ogledate na spodnji sliki zaslona.
Funkcijo po meri lahko uporabite tudi znotraj druge funkcije po meri. Na začetku našega bloga smo si ogledali problem pretvorbe števila v besedilo z uporabo funkcije po meri z imenom SpellNumber .
Z njegovo pomočjo lahko iz območja dobimo največjo vrednost in jo takoj zapišemo kot besedilo.
V ta namen bomo ustvarili novo funkcijo po meri, v kateri bomo uporabili funkcije GetMaxBetween in . SpellNumber ki jih že poznamo.
Funkcija SpellGetMaxBetween(rngCells As Range, MinNum, MaxNum) SpellGetMaxBetween = SpellNumber(GetMaxBetween (rngCells, MinNum, MaxNum)) End FunctionKot lahko vidite, je GetMaxBetween je argument druge funkcije po meri, SpellNumber . Določa največjo vrednost, kot smo to že večkrat storili. To število se nato pretvori v besedilo.
Na zgornji sliki zaslona lahko vidite, kako je SpellGetMaxBetween poišče največje število med 100 in 500 in ga pretvori v besedilo.
Klicanje UDF iz drugih delovnih zvezkov
Če ste v delovnem zvezku ustvarili UDF, to žal ne pomeni, da ne boste imeli težav.
Po mojih izkušnjah večina uporabnikov prej ali slej ustvari svojo osebno zbirko makrov in uporabniških funkcij za avtomatizacijo posameznih procesov in izračunov. In tu se pojavi težava - kodo uporabniško definiranih funkcij v Visual Basicu je treba nekje shraniti, da jo je mogoče pozneje uporabiti pri delu.
Če želite uporabiti funkcijo po meri, mora biti v Excelu odprt delovni zvezek, v katerem ste jo shranili. Če ni, se bo pri poskusu uporabe pojavila napaka #NAME! Ta napaka pomeni, da Excel ne pozna imena funkcije, ki jo želite uporabiti v formuli.
Oglejmo si načine uporabe ustvarjenih funkcij po meri.
Metoda 1. Funkciji dodajte ime delovnega zvezka
Pred imenom funkcije lahko navedete ime delovnega zvezka, v katerem se nahaja. Če ste na primer shranili funkcijo po meri GetMaxBetween() v delovnem zvezku z imenom My_Functions.xlsm potem morate vnesti naslednjo formulo:
= My_Functions.xlsm!GetMaxBetween(A1:A6,10,50)
Metoda 2. Shranjevanje vseh UDF v eni skupni datoteki
Vse funkcije po meri shranite v en poseben delovni zvezek (na primer, My_Functions.xlsm ) in po potrebi kopirajte želeno funkcijo iz njega v trenutni delovni zvezek.
Vsakič, ko ustvarite novo funkcijo po meri, morate podvojiti njeno kodo v delovnem zvezku, v katerem jo boste uporabljali. Pri tej metodi se lahko pojavi več nevšečnosti:
- Če je delovnih datotek veliko in je funkcija potrebna povsod, bo treba kodo kopirati v vsako knjigo.
- Ne pozabite shraniti delovnega zvezka v obliki, ki omogoča uporabo makrov (.xlsm ali .xlsb).
- Pri odpiranju take datoteke bo zaščita pred makri vsakič prikazala opozorilo, ki ga je treba potrditi. Veliko uporabnikov se ustraši, ko vidijo opozorilo v rumeni vrstici, ki zahteva, da omogočijo makre. Če se želite izogniti prikazu tega sporočila, morate popolnoma onemogočiti zaščito programa Excel. Vendar to morda ni vedno pravilno in varno.
Mislim, da se boste strinjali z mano, da nenehno odpiranje datoteke in kopiranje kode uporabniško definiranih funkcij iz nje ali zapisovanje imena te datoteke v formulo ni najboljša rešitev. tako smo prišli do tretjega načina.
Metoda 3. Ustvarite datoteko dodatka za Excel
Menim, da je najboljši način, da pogosto uporabljene funkcije po meri shranite v datoteko dodatka za Excel. Prednosti uporabe dodatka:
- Dodatek morate z Excelom povezati samo enkrat. Nato lahko njegove postopke in funkcije uporabljate v kateri koli datoteki v tem računalniku. Delovnih zvezkov vam ni treba shranjevati v formatih .xlsm in .xlsb, saj izvorna koda ne bo shranjena v njih, temveč v datoteki dodatka.
- Zaščita pred makri vas ne bo več motila, saj se dodatki vedno nanašajo na zaupanja vredne vire.
- Dodatek je ločena datoteka, ki jo je mogoče preprosto prenesti iz računalnika v računalnik in deliti s sodelavci.
Več o ustvarjanju in uporabi dodatka bomo govorili pozneje.
Uporaba dodatkov za shranjevanje funkcij po meri
Kako ustvarim svoj dodatek? Poglejmo ta postopek po korakih.
Korak 1. Ustvarite datoteko dodatka
Odprite Microsoft Excel, ustvarite nov delovni zvezek in ga shranite pod poljubnim primernim imenom (na primer My_Functions) v obliki dodatka. To storite tako, da uporabite meni Datoteka - Shrani kot ali tipko F12. Ne pozabite navesti vrsto datoteke Dodatek za Excel :
Vaš dodatek bo imel končnico .xlam.
Nasvet. Upoštevajte, da Excel privzeto shranjuje dodatke v C:\Uporabniki\[Vaše_imeno]\AppData\Roaming\Microsoft\AddIns priporočam, da sprejmete privzeto lokacijo. Če želite, lahko določite katero koli drugo mapo. Toda potem boste morali pri povezovanju dodatka ročno poiskati in določiti njegovo novo lokacijo. Če ga shranite v privzeto mapo, vam dodatka ni treba iskati v računalniku. Excel ga bo samodejno našel.
Korak 2. Povežite datoteko dodatka
Zdaj je treba dodatek, ki smo ga ustvarili, povezati z Excelom. Potem se bo samodejno naložil ob zagonu programa. To storite tako, da v meniju Datoteka - Možnosti - Dodatki . Prepričajte se, da Dodatki programa Excel je izbrana v Upravljanje polje. Kliknite na Pojdi na V oknu, ki se prikaže, označite naš dodatek My_Functions. Če ga ne vidite na seznamu, kliknite gumb Brskanje po in poiščite lokacijo datoteke z dodatkom.
Če za shranjevanje funkcij po meri uporabljate dodatek, morate upoštevati eno preprosto pravilo. Če delovni zvezek prenašate na druge osebe, obvezno prenesite tudi kopijo dodatka, ki vsebuje želene funkcije. Povezati ga morajo na enak način, kot ste ga zdaj.
Korak 3. Dodajanje funkcij in makrov po meri v dodatek
Naš dodatek je povezan z Excelom, vendar še nima nobene funkcionalnosti. Če mu želite dodati nove module UDF, odprite urejevalnik Visual Basic s pritiskom kombinacije tipk Alt + F11 . Nato lahko dodate nove module s kodo VBA, kot je opisano v mojem vodniku Ustvarjanje modulov UDF.
Izberite svojo datoteko dodatka ( My_Finctions.xlam ) v oknu VBAProject. Uporabite Vstavljanje - modul v meni lahko dodate modul po meri. vanj morate zapisati funkcije po meri.
Kodo uporabniško definirane funkcije lahko vnesete ročno ali pa jo od nekod kopirate.
To je vse. Zdaj ste ustvarili svoj dodatek, ga dodali v Excel in v njem lahko uporabite UDF. Če želite uporabiti več UDF, v urejevalniku VBA v modulu dodatka preprosto napišite kodo in jo shranite.
To je za danes vse. Naučili smo se, kako uporabljati uporabniško določene funkcije v delovnem zvezku. Resnično upamo, da so vam ta navodila v pomoč. Če imate kakršnakoli vprašanja, pišite v komentarje k temu članku.