Enhavtabelo
Ni daŭrigas la serion de lerniloj pri funkcioj difinitaj de la uzanto. En niaj antaŭaj artikoloj, ni konatiĝis kun kutimaj funkcioj kaj lernis kiel krei kaj uzi ilin. En ĉi tiu manlibro ni rigardos la specifaĵojn pri uzado de ĉi tiuj funkcioj kaj vidos la diferencojn inter UDF-oj kaj VBA-makrooj.
En ĉi tiu lernilo, ni lernos la jenajn:
Ni esperas, ke ĉi tiu artikolo plifortigos vian scion pri UDF kaj helpos vin uzi ilin eĉ pli efike en viaj Excel-laborlibroj.
Ĉu UDF kaj Makroo estas la sama?
Ambaŭ uzant-difinitaj funkcioj kaj VBA. makrooj estas kreitaj per la VBA-redaktilo. Kio estas la diferenco inter ili kaj al kio doni preferon?
La plej grava diferenco estas, ke la funkcio faras la kalkulon, kaj la makroo faras iun agon. Uzanto difinita funkcio, kiel regula Excel-funkcio, devas esti skribita en ĉelo. Kiel rezulto de ĝia ekzekuto, la ĉelo redonas iun valoron. Samtempe, estas neeble ŝanĝi la valorojn de aliaj ĉeloj, same kiel iujn ecojn de la nuna ĉelo (precipe, formatado). Tamen, vi povas uzi kutiman funkcion en kondiĉformataj formuloj.
UDF kaj VBA-makrooj funkcias en malsamaj manieroj. Ekzemple, kiam vi kreas UDF en la Vida Baza Redaktoro, vi komencas per deklaro Funkcio kaj finas per Finfunkcio . Kiam vi registras makroon, vi komencas per adeklaro Sub kaj finiĝas per End Sub.
Ne ĉiuj Visual Basic-funkciigistoj povas esti uzataj por krei UDF-ojn. Tial makroo estas pli diverstalenta solvo.
Makroo ne postulas, ke la uzanto pasu iujn ajn argumentojn (nek ĝi povas akcepti iujn ajn argumentojn), male al uzant-difinita funkcio.
La afero estas, ke iuj komandoj de makrooj povas uzi ĉeladresojn aŭ formatajn elementojn (ekzemple koloro). Se vi movas ĉelojn, aldonas aŭ forigas vicojn kaj kolumnojn, ŝanĝas la formaton de ĉeloj, tiam vi povas facile "rompi" viajn makroojn. Ĉi tio estas precipe ebla se vi dividas vian dosieron kun kolegoj, kiuj ne scias kiel funkcias viaj makrooj.
Ekzemple, vi havas dosieron kun perfekte funkcianta makroo. Ĉi tiu formulo kalkulas la procenton de ĉelo A1 al A4. Makroo ŝanĝas la koloron de ĉi tiuj ĉeloj al flava. Procenta formato estas agordita en la aktiva ĉelo.
Se vi aŭ iu alia decidas enmeti novan vicon, la makroo daŭre serĉos la valoron en la A4 ĉelo ( la 4,1 parametro en via UDF), malsukcesas kaj resendas eraron:
En ĉi tiu kazo, la eraro okazis pro divido per nulo (neniu valoro en nove aldonita vico). Se la makroo plenumas, ni diru, sumon, tiam vi simple ricevos malĝustan rezulton. Sed vi ne scios pri tio.
Kontraste al makrooj, uzant-difinitaj funkcioj ne povas kaŭzi tian malagrablan situacion.
Sube vi vidas la agadon dela samaj kalkuloj uzante UDF. Ĉi tie vi povas specifi enigajn ĉelojn ie ajn en la laborfolio kaj vi ne alfrontos neatenditajn problemojn kiam vi ŝanĝas ĝin.
Mi skribis la jenan formulon en C3:
=UDF_vs_Macro(A1,A4)
Tiam mi enmetis malplenan vicon, kaj la formulo ŝanĝiĝis kiel vi povas vidi en la supra ekrankopio.
Nun ni povas movi enigan ĉelon aŭ ĉelon kun funkcio ie ajn. La rezulto ĉiam estos ĝusta.
Aldona avantaĝo de uzado de UDF-oj estas, ke ili aŭtomate ĝisdatigas kiam la valoro en la eniga ĉelo ŝanĝiĝas. Kiam vi uzas makroojn, vi ĉiam devas certigi, ke ĉiuj datumoj estas ĝisdatigitaj.
Konsiderante ĉi tiun ekzemplon, mi preferus uzi UDF-ojn kiam ajn eblas kaj uzi makroojn nur por aliaj ne-kalkulaj agadoj.
Limigoj kaj malavantaĝoj de uzado de UDF
Mi jam menciis la avantaĝojn de UDF supre. Mallonga rakonto, ĝi povas fari kalkulojn, kiuj ne eblas kun normaj Excel-funkcioj. Krome, ĝi povas konservi kaj uzi longajn kaj kompleksajn formulojn, igante ilin ununura funkcio. Kaj vi ne devos skribi komplikajn formulojn ree kaj ree.
Nun ni parolu pli detale pri la mankoj de la UDF:
- Krei UDF-ojn postulas la uzon de VBA. Ne estas maniero ĉirkaŭ ĝi. Ĉi tio signifas, ke la uzanto ne povas registri la UDF sammaniere kiel Excel-makro. Vi devas krei la UDF mem. Tamen, vi povas kopii kajalgluu partojn de la antaŭe registrita makrokodo en vian funkcion. Vi nur bezonas konscii pri la limigoj de kutimaj funkcioj.
- Alia malavantaĝo de UDF estas, ke kiel ĉiu alia Excel-funkcio ĝi povas nur redoni ununuran valoron aŭ tabelon da valoroj en ĉelon. Ĝi simple faras kalkulojn, nenio pli.
- Se vi volas kunhavigi vian laborlibron kun viaj kolegoj, nepre konservu viajn UDF-ojn en la sama dosiero. Alie, viaj kutimaj funkcioj ne funkcios por ili.
- Propraj funkcioj kreitaj per la VBA-redaktilo estas pli malrapidaj ol regulaj funkcioj. Ĉi tio estas precipe rimarkebla en grandaj tabloj. Bedaŭrinde, VBA ĝis nun estas tre malrapida programlingvo. Sekve, se vi havas multajn datumojn, provu uzi normajn funkciojn kiam ajn eblas, aŭ kreu UDF-ojn per la LAMBDA-funkcio.
Personaj Funkciaj Limoj:
- UDF-oj estas desegnita por fari kalkulojn kaj redoni valoron. Ili ne povas esti uzataj anstataŭ makrooj.
- Ili ne povas ŝanĝi la enhavon de iuj aliaj ĉeloj (nur la aktiva ĉelo).
- Nomoj de funkcioj devas sekvi iujn regulojn. Ekzemple, vi ne povas uzi nomon kiu kongruas kun denaska Excel-funkcia nomo aŭ ĉela adreso, kiel AB123.
- Via kutima funkcio ne povas enhavi spacojn en la nomo, sed ĝi povas inkluzivi la substrekon. Tamen, la preferata metodo estas uzi majusklojn komence de ĉiu novavorto (ekzemple GetMaxBetween).
- UDF ne povas kopii kaj alglui ĉelojn al aliaj areoj de la laborfolio.
- Ili ne povas ŝanĝi la aktivan laborfolion.
- UDF-oj povas' t ŝanĝu la formatadon en la aktiva ĉelo. Se vi volas ŝanĝi la formatadon de ĉelo dum montrado de malsamaj valoroj, vi devus uzi kondiĉan formatadon.
- Ili ne povas malfermi pliajn librojn.
- Ili ne povas esti uzataj por ruli makroojn per Application.OnTime. .
- Uzant-difinita funkcio ne povas esti kreita per la makroregistrilo.
- Funkcioj ne aperas en la Ellaboranto > Dialogo de Makrooj .
- Viaj funkcioj aperos en la dialogujo ( Enmeti > Funkcio ) kaj en la listo de funkcioj nur se ili estas deklaritaj kiel Publikaj (tio estas la defaŭlta, krom se alie notite).
- Ajnaj funkcioj deklaritaj kiel Privata ne aperos en la listo de funkcioj.
Sufiĉe malrapida operacio. , same kiel iuj limigoj en uzo, povas pensigi vin: "Kio estas la uzo de ĉi tiuj kutimaj funkcioj?"
Ili povas esti utilaj, kaj fari se ni atentas pri la limoj truditaj al ili. Se vi lernas kiel ĝuste krei kaj uzi UDF-ojn, vi povas skribi vian bibliotekon de funkcioj. Ĉi tio multe pligrandigos vian kapablon labori kun datumoj en Excel.
Kiel mi, kutimaj funkcioj estas bonegaj tempoŝparaj. Kaj kio pri vi? Ĉu vi jam provis krei vian propran UDF? Ĉu vi ŝatis ĝinpli bona ol la bazaj Excel-funkcioj? Ni diskutu ĝin en la Komentoj :)