Sadržaj
Nastavljamo seriju tutorijala o korisnički definiranim funkcijama. U našim prethodnim člancima upoznali smo se sa prilagođenim funkcijama i naučili kako ih kreirati i koristiti. U ovom priručniku ćemo pogledati specifičnosti korištenja ovih funkcija i vidjeti razlike između UDF-ova i VBA makroa.
U ovom vodiču naučit ćemo sljedeće:
Nadamo se da će ovaj članak poboljšati vaše znanje o UDF-u i pomoći vam da ih još učinkovitije koristite u vašim Excel radnim knjigama.
Da li su UDF i makro ista stvar?
Obje korisničke funkcije i VBA makroi se kreiraju pomoću VBA editora. Koja je razlika između njih i čemu dati prednost?
Najvažnija razlika je u tome što funkcija obavlja proračun, a makro neku radnju. Korisnički definirana funkcija, poput obične Excel funkcije, mora biti napisana u ćeliji. Kao rezultat njegovog izvršenja, ćelija vraća neku vrijednost. Istovremeno, nemoguće je promijeniti vrijednosti drugih ćelija, kao i neka svojstva trenutne ćelije (posebno formatiranje). Međutim, možete koristiti prilagođenu funkciju u formulama za uslovno oblikovanje.
UDF i VBA makro rade na različite načine. Na primjer, kada kreirate UDF u Visual Basic Editoru, počinjete s naredbom Function i završavate s End Function . Kada snimate makro, počinjete sa aizraz Sub i završava sa End Sub.
Ne mogu se svi Visual Basic operatori koristiti za kreiranje UDF-ova. Iz tog razloga, makro je svestranije rješenje.
Makro ne zahtijeva od korisnika da prenese bilo koji argument (niti može prihvatiti bilo koji argument), za razliku od korisnički definirane funkcije.
Poenta je da neke komande makroa mogu koristiti adrese ćelija ili elemente oblikovanja (na primjer, boju). Ako premještate ćelije, dodajete ili uklanjate redove i stupce, mijenjate format ćelija, tada možete lako "razbiti" svoje makroe. Ovo je posebno moguće ako svoju datoteku dijelite sa kolegama koji ne znaju kako funkcioniraju vaši makroi.
Na primjer, imate datoteku sa makroom koji savršeno radi. Ova formula izračunava procenat ćelija A1 do A4. Makro mijenja boju ovih ćelija u žutu. Format postotka je postavljen u aktivnoj ćeliji.
Ako vi ili neko drugi odlučite umetnuti novi red, makro će nastaviti tražiti vrijednost u ćeliji A4 ( parametar 4,1 u vašem UDF-u), ne uspijeva i vraća grešku:
U ovom slučaju, greška je nastala zbog dijeljenja sa nulom (nema vrijednosti u novododatom red). U slučaju da makro izvrši, recimo, sumiranje, onda ćete jednostavno dobiti pogrešan rezultat. Ali nećete znati za to.
Za razliku od makronaredbi, korisnički definirane funkcije ne mogu uzrokovati tako neugodnu situaciju.
U nastavku vidite performanseisti proračuni koristeći UDF. Ovdje možete navesti ćelije za unos bilo gdje u radnom listu i nećete se suočiti s neočekivanim problemima kada ga promijenite.
Napisao sam sljedeću formulu u C3:
=UDF_vs_Macro(A1,A4)
Onda sam umetnuo prazan red, a formula se promijenila kao što možete vidjeti na slici iznad.
Sada možemo premjestiti ulaznu ćeliju ili ćeliju sa funkcijom bilo gdje. Rezultat će uvijek biti tačan.
Dodatna prednost korištenja UDF-ova je da se automatski ažuriraju kada se promijeni vrijednost u ulaznoj ćeliji. Kada koristite makronaredbe, uvijek morate osigurati da su svi podaci ažurirani.
Imajući ovaj primjer na umu, radije bih koristio UDF-ove gdje god je to moguće i koristio makroe samo za druge aktivnosti koje se ne računaju.
Ograničenja i nedostaci upotrebe UDF-a
Već sam spomenuo prednosti UDF-a iznad. Ukratko, može izvršiti proračune koji nisu mogući sa standardnim Excel funkcijama. Osim toga, može spremiti i koristiti dugačke i složene formule, pretvarajući ih u jednu funkciju. I nećete morati da pišete komplikovane formule iznova i iznova.
Sada razgovarajmo detaljnije o nedostacima UDF-a:
- Kreiranje UDF-ova zahteva upotrebu VBA. Ne postoji način da se to zaobiđe. To znači da korisnik ne može snimiti UDF na isti način kao Excel makro. Morate sami kreirati UDF. Međutim, možete kopirati izalijepite dijelove prethodno snimljenog makro koda u svoju funkciju. Samo trebate biti svjesni ograničenja prilagođenih funkcija.
- Još jedan nedostatak UDF-a je taj što kao i svaka druga Excel funkcija može vratiti samo jednu vrijednost ili niz vrijednosti u ćeliju. Jednostavno izvodi proračune, ništa više.
- Ako želite podijeliti svoju radnu svesku sa svojim kolegama, obavezno sačuvajte svoje UDF-ove u istoj datoteci. U suprotnom, vaše prilagođene funkcije neće raditi za njih.
- Prilagođene funkcije kreirane pomoću VBA editora su sporije od običnih funkcija. To je posebno vidljivo na velikim stolovima. Nažalost, VBA je do sada veoma spor programski jezik. Stoga, ako imate puno podataka, pokušajte koristiti standardne funkcije kad god je to moguće ili kreirajte UDF-ove koristeći LAMBDA funkciju.
Ograničenja prilagođenih funkcija:
- UDF-ovi su dizajniran za izvođenje proračuna i vraćanje vrijednosti. Ne mogu se koristiti umjesto makroa.
- Ne mogu promijeniti sadržaj bilo koje druge ćelije (samo aktivne ćelije).
- Nazivi funkcija moraju slijediti određena pravila. Na primjer, ne možete koristiti ime koje odgovara izvornom nazivu Excel funkcije ili adresi ćelije, kao što je AB123.
- Vaša prilagođena funkcija ne može sadržavati razmake u nazivu, ali može uključivati donju crtu. Međutim, poželjna metoda je korištenje velikih slova na početku svakog novogriječ (na primjer, GetMaxBetween).
- UDF ne može kopirati i lijepiti ćelije u druga područja radnog lista.
- Ne mogu promijeniti aktivni radni list.
- UDF-ovi mogu' t promijenite formatiranje u aktivnoj ćeliji. Ako želite promijeniti formatiranje ćelije kada prikazujete različite vrijednosti, trebali biste koristiti uvjetno oblikovanje.
- Ne mogu otvoriti dodatne knjige.
- Ne mogu se koristiti za pokretanje makronaredbi koristeći Application.OnTime .
- Korisnički definirana funkcija ne može se kreirati pomoću snimača makroa.
- Funkcije se ne pojavljuju u Programer > Makroi dijalog.
- Vaše funkcije će se pojaviti u dijaloškom okviru ( Ubaci > Funkcija ) i na listi funkcija samo ako su deklarirane kao Javne (ovo je zadana postavka, osim ako nije drugačije naznačeno).
- Sve funkcije deklarirane kao Private neće se pojaviti na listi funkcija.
Prilično spora operacija , kao i neka ograničenja u korištenju, mogu vas navesti na razmišljanje: "Koja je upotreba ovih prilagođenih funkcija?"
Mogu nam dobro doći, a mogu i učiniti ako imamo na umu ograničenja koja su im nametnuta. Ako naučite kako pravilno kreirati i koristiti UDF-ove, možete napisati svoju biblioteku funkcija. Ovo će uvelike proširiti vašu sposobnost rada s podacima u Excelu.
Što se mene tiče, prilagođene funkcije odlično štede vrijeme. I šta sa tobom? Jeste li već pokušali kreirati vlastiti UDF? Da li ti se svidelobolje od osnovnih Excel funkcija? Hajde da razgovaramo o tome u komentarima :)