Turinys
Šiandien toliau nagrinėsime vartotojo funkcijas "Excel". Kadangi jau žinote, kaip kurti UDF (ir, tikiuosi, taip pat bandėte jas taikyti "Excel" programoje), gilinkimės šiek tiek giliau ir sužinokime, kaip naudoti ir saugoti vartotojo funkcijas "Excel" programoje.
Be to, parodysime, kaip lengvai išsaugoti funkcijas "Excel" papildinio faile, kad vėliau galėtumėte jas naudoti keliais spustelėjimais.
Štai apie ką kalbėsime:
Įvairūs UDF naudojimo būdai programoje "Excel
UDF naudojimas darbalapiuose
Patikrinę, kad UDF veikia teisingai, galite jas naudoti "Excel" formulėse arba VBA kode.
Pasirinktines funkcijas "Excel" sąsiuvinyje galite taikyti taip pat, kaip ir įprastas funkcijas. Pavyzdžiui, tiesiog ląstelėje įrašykite toliau pateiktą formulę:
= GetMaxBetween(A1:A6,10,50)
UDF galima naudoti kartu su įprastinėmis funkcijomis. Pavyzdžiui, prie apskaičiuotos didžiausios reikšmės pridėti tekstą:
= CONCATENATE("Didžiausia reikšmė tarp 10 ir 50 yra ", GetMaxBetween(A1: A6,10,50))
Rezultatą galite pamatyti toliau pateiktoje ekrano nuotraukoje:
Galite rasti skaičių, kuris yra didžiausias ir patenka į intervalą nuo 10 iki 50.
Patikrinkime kitą formulę:
= INDEX(A2:A9, MATCH(GetMaxBetween(B2:B9, F1, F2), B2:B9,0)), the
Pasirinktinė funkcija GetMaxBetween patikrina intervalą B2:B9 ir suranda didžiausią skaičių nuo 10 iki 50. Tada, naudodami INDEX + MATCH, gauname gaminio pavadinimą, atitinkantį šią didžiausią vertę:
Kaip matote, pasirinktinių funkcijų naudojimas nelabai skiriasi nuo įprastų "Excel" funkcijų.
Tai darydami nepamirškite, kad naudotojo apibrėžta funkcija gali tik grąžinti reikšmę, bet negali atlikti jokių kitų veiksmų. Skaitykite daugiau apie naudotojo apibrėžtų funkcijų apribojimus.
UDF naudojimas VBA procedūrose ir funkcijose
UDF taip pat galima naudoti VBA makrokomandose. Toliau pateikiamas makrokomandos kodas, kuris stulpelyje, kuriame yra aktyvioji ląstelė, ieško didžiausios vertės intervale nuo 10 iki 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 kode yra pasirinktinė funkcija
GetMaxBetween(.Cells, 10, 50)
Jis suranda didžiausią aktyvaus stulpelio vertę. Tada ši vertė bus paryškinta. Makro rezultatas matomas toliau pateiktoje ekrano nuotraukoje.
Pasirinktinę funkciją taip pat galima naudoti kitos pasirinktinės funkcijos viduje. Anksčiau savo tinklaraštyje nagrinėjome skaičiaus konvertavimo į tekstą problemą, naudodami pasirinktinę funkciją, pavadintą SpellNumber .
Jo pagalba galime gauti didžiausią reikšmę iš intervalo ir iš karto ją užrašyti kaip tekstą.
Tam sukursime naują pasirinktinę funkciją, kurioje naudosime funkcijas GetMaxBetween ir SpellNumber kurie mums jau pažįstami.
Funkcija SpellGetMaxBetween(rngCells As Range, MinNum, MaxNum) SpellGetMaxBetween = SpellNumber(GetMaxBetween (rngCells, MinNum, MaxNum)) End FunctionKaip matote, GetMaxBetween funkcija yra kitos pasirinktinės funkcijos argumentas, SpellNumber . Jame apibrėžiama didžiausia reikšmė, kaip tai darėme daug kartų anksčiau. Tada šis skaičius paverčiamas tekstu.
Pirmiau pateiktoje ekrano nuotraukoje matote, kaip SpellGetMaxBetween funkcija randa didžiausią skaičių nuo 100 iki 500 ir konvertuoja jį į tekstą.
UDF iškvietimas iš kitų sąsiuvinių
Jei savo darbaknygėje sukūrėte UDF, tai, deja, nereiškia, kad nesusidursite su jokiomis problemomis.
Mano patirtis rodo, kad dauguma naudotojų anksčiau ar vėliau susikuria asmeninį makroprocesų ir pasirinktinių funkcijų rinkinį, skirtą atskiriems procesams ir skaičiavimams automatizuoti. Ir čia iškyla problema - naudotojo apibrėžtų funkcijų kodą "Visual Basic" reikia kur nors saugoti, kad vėliau būtų galima naudoti darbe.
Norint pritaikyti pasirinktinę funkciją, "Excel" turi būti atidarytas sąsiuvinis, kuriame ją išsaugojote. Jei taip nėra, bandydami ją naudoti gausite klaidą #NAME! Ši klaida rodo, kad "Excel" nežino funkcijos, kurią norite naudoti formulėje, pavadinimo.
Apžvelkime, kaip galite naudoti sukurtas pasirinktines funkcijas.
1 būdas. Į funkciją įtraukite sąsiuvinio pavadinimą
Prieš funkcijos pavadinimą galite nurodyti sąsiuvinio, kuriame ji yra, pavadinimą. Pavyzdžiui, jei išsaugojote pasirinktinę funkciją GetMaxBetween() sąsiuvinyje, pavadintame My_Functions.xlsm , tuomet turite įvesti šią formulę:
= My_Functions.xlsm!GetMaxBetween(A1:A6,10,50)
2 būdas. Saugoti visus UDF viename bendrame faile
Išsaugokite visas pasirinktines funkcijas viename specialiame sąsiuvinyje (pvz, My_Functions.xlsm ) ir, jei reikia, nukopijuokite norimą funkciją iš jo į dabartinį sąsiuvinį.
Kiekvieną kartą, kai sukuriate naują pasirinktinę funkciją, turite dubliuoti jos kodą sąsiuvinyje, kuriame ją naudosite. Taikant šį metodą gali kilti keletas nepatogumų:
- Jei yra daug darbinių failų ir funkcija reikalinga visur, kodą reikės nukopijuoti į kiekvieną knygą.
- Nepamirškite darbaknygę išsaugoti makrokomandų formatu (.xlsm arba .xlsb).
- Atidarant tokį failą, apsauga nuo makrokomandų kiekvieną kartą parodys įspėjimą, kurį reikia patvirtinti. Daugelis naudotojų išsigąsta pamatę geltonos juostos įspėjimą, kuriame prašoma įjungti makrokomandas. Norėdami išvengti šio pranešimo rodymo, turite visiškai išjungti "Excel" apsaugą. Tačiau tai ne visada gali būti teisinga ir saugu.
Manau, kad sutiksite su manimi, jog visą laiką atidaryti failą ir iš jo nukopijuoti vartotojo apibrėžtų funkcijų kodą arba formulėje įrašyti šio failo pavadinimą nėra pats geriausias sprendimas. taigi, priėjome prie trečiojo būdo.
3 būdas. Sukurti "Excel" priedo failą
Manau, kad geriausias būdas - dažnai naudojamas pasirinktines funkcijas saugoti "Excel" papildinio faile. Papildinio naudojimo privalumai:
- Priedą prie "Excel" reikia prijungti tik vieną kartą. Po to jo procedūras ir funkcijas galite naudoti bet kuriame šiame kompiuteryje esančiame faile. Savo darbaknygių nereikia išsaugoti .xlsm ir .xlsb formatais, nes šaltinio kodas bus saugomas ne juose, o priedo faile.
- Jums nebetrukdys makrokomandų apsauga, nes priedai visada nurodo į patikimus šaltinius.
- Priedas yra atskiras failas. Jį lengva perkelti iš vieno kompiuterio į kitą, dalytis su kolegomis.
Daugiau apie priedų kūrimą ir naudojimą kalbėsime vėliau.
Papildinių naudojimas pasirinktinėms funkcijoms saugoti
Kaip sukurti savo priedą? Žingsnis po žingsnio pereikime šį procesą.
1 veiksmas. Sukurkite papildinio failą
Atidarykite "Microsoft Excel", sukurkite naują sąsiuvinį ir išsaugokite jį bet kokiu tinkamu pavadinimu (pvz., My_Functions) priedo formatu. Norėdami tai padaryti, naudokite meniu Failas - Išsaugoti kaip arba klavišu F12. Būtinai nurodykite failo tipą "Excel" papildinys :
Jūsų priedas turės plėtinį .xlam.
Patarimas. Atkreipkite dėmesį, kad pagal numatytuosius nustatymus "Excel" priedus saugo C:\Users\[Jūsų_vardas]\AppData\Roaming\Microsoft\AddIns aplanke. Rekomenduoju priimti numatytąją vietą. Jei norite, galite nurodyti bet kurį kitą aplanką. Tačiau tada, prijungiant priedą, turėsite rankiniu būdu surasti ir nurodyti jo naująją vietą. Jei išsaugosite jį numatytajame aplanke, jums nereikės ieškoti priedo kompiuteryje. "Excel" jį automatiškai įtrauks į sąrašą.
2 veiksmas. Prijunkite papildinio failą
Dabar mūsų sukurtą priedą reikia prijungti prie "Excel". Tuomet jis bus įkeltas automatiškai, kai programa bus paleista. Norėdami tai padaryti, naudokite meniu Failas - Parinktys - Papildiniai . Įsitikinkite, kad "Excel" papildiniai pasirinktas Tvarkykite lauke. Spustelėkite Eikite į lango apačioje esantį mygtuką. Atsidariusiame lange pažymėkite mūsų priedą My_Functions. Jei sąraše jo nematote, spustelėkite Naršykite mygtuką ir raskite priedo failo vietą.
Jei naudojate priedą pasirinktinėms funkcijoms saugoti, reikia laikytis vienos paprastos taisyklės. Jei perduodate sąsiuvinį kitiems žmonėms, būtinai perduokite ir priedo, kuriame yra norimos funkcijos, kopiją. Jie turėtų jį prijungti taip pat, kaip ir dabar.
3 veiksmas. Į priedą pridėkite pasirinktinių funkcijų ir makrokomandų
Mūsų priedas prijungtas prie "Excel", tačiau jis dar neturi jokių funkcijų. Norėdami pridėti naujų UDF, atidarykite "Visual Basic" redaktorių, paspausdami Alt + F11 . Tada galite pridėti naujų modulių su VBA kodu, kaip aprašyta mano vadovėlyje "UDF kūrimas".
Pasirinkite savo papildinio failą ( My_Finctions.xlam ) VBAProjekto lange. Naudokite Įterpimas - modulis meniu pridėti pasirinktinį modulį. Į jį reikia įrašyti pasirinktines funkcijas.
Naudotojo apibrėžtos funkcijos kodą galite įvesti rankiniu būdu arba nukopijuoti iš kur nors.
Štai ir viskas. Dabar sukūrėte savo priedą, pridėjote jį prie "Excel" ir galite jame naudoti UDF. Jei norite naudoti daugiau UDF, tiesiog parašykite kodą priedo modulyje VBA redaktoriuje ir jį išsaugokite.
Štai ir viskas šiai dienai. Išmokome, kaip naudoti naudotojo apibrėžtas funkcijas savo darbalaukyje. Labai tikimės, kad šios gairės jums bus naudingos. Jei turite klausimų, rašykite šio straipsnio komentaruose.