Sisukord
Jätkame juhendmaterjalide sarja kasutaja määratud funktsioonide kohta. Eelmistes artiklites tutvusime kohandatud funktsioonidega ning õppisime, kuidas neid luua ja kasutada. Selles juhendis vaatleme nende funktsioonide kasutamise eripärasid ja näeme erinevusi UDFide ja VBA makrode vahel.
Selles õpetuses õpime järgmist:
Loodame, et see artikkel suurendab teie teadmisi UDFi kohta ja aitab teil neid Exceli töövihikutes veelgi tõhusamalt kasutada.
Kas UDF ja makro on sama asi?
VBA redaktori abil luuakse nii kasutaja määratletud funktsioone kui ka VBA makrosid. Mis on nende vahe ja mida eelistada?
Kõige olulisem erinevus seisneb selles, et funktsioon teostab arvutuse, makro aga mingi tegevuse. Kasutaja määratud funktsioon, nagu tavaline Exceli funktsioon, tuleb kirjutada lahtrisse. Selle täitmise tulemusel tagastab lahter mingi väärtuse. Samas ei ole võimalik muuta teiste lahtrite väärtusi, samuti praeguse lahtri mõningaid omadusi (eelkõige,vormindamine). Siiski saate kasutada kohandatud funktsiooni tingimuslikes vormindusvalemites.
UDF ja VBA makro töötavad erinevalt. Näiteks kui te loote UDFi Visual Basic'i redaktoris, alustate te avaldusega Funktsioon ja lõpetada Lõppfunktsioon Makro salvestamisel alustate avaldusega Sub ja lõpetada End Sub.
UDF-i loomiseks ei saa kasutada kõiki Visual Basici operaatoreid. Seetõttu on makro mitmekülgsem lahendus.
Makro ei nõua kasutajalt argumentide edastamist (ega saa ka vastu võtta argumente), erinevalt kasutaja poolt defineeritud funktsioonist.
Asi on selles, et mõned makrode käsud võivad kasutada lahtriadresse või vorminguelemente (näiteks värvi). Kui te liigutate lahtreid, lisate või eemaldate ridu ja veerge, muudate lahtrite formaati, siis võite oma makrosid kergesti "rikkuda". See on eriti võimalik, kui te jagate oma faili kolleegidega, kes ei tea, kuidas teie makrosid töötavad.
Näiteks on teil fail, kus on täiesti toimiv makro. See valem arvutab protsendi lahtrile A1 kuni A4. Makro muudab nende lahtrite värvi kollaseks. Aktiivses lahtris on määratud protsendi formaat.
Kui teie või keegi teine otsustab sisestada uue rea, jätkab makro väärtuse otsimist lahtris A4 (parameeter 4,1 teie UDFis), ebaõnnestub ja annab veateate:
Sellisel juhul tekkis viga nulliga jagamise tõttu (äsja lisatud reas ei ole väärtust). Juhul kui makro teeb, ütleme, summeerimist, siis saad lihtsalt vale tulemuse. Aga sa ei saa sellest teada.
Erinevalt makrotest ei saa kasutaja määratletud funktsioonid sellist ebameeldivat olukorda tekitada.
Allpool näete samade arvutuste sooritamist UDFi abil. Siin saate määrata sisendruute ükskõik kus töölehel ja selle muutmisel ei teki ootamatuid probleeme.
Kirjutasin C3-s järgmise valemi:
=UDF_vs_Macro(A1,A4)
Seejärel sisestasin tühja rea ja valem muutus, nagu näete ülaltoodud ekraanipildil.
Nüüd saame sisendrakke või funktsiooni rakku liigutada ükskõik kuhu. Tulemus on alati õige.
UDFide kasutamise täiendav eelis on see, et need uuendatakse automaatselt, kui sisendraku väärtus muutub. Makrode kasutamisel peate alati tagama, et kõik andmed on ajakohased.
Seda näidet silmas pidades eelistaksin ma kasutada UDF-i, kus see on võimalik, ja kasutada makroid ainult muude mittearvutuste tegemiseks.
UDFi kasutamise piirangud ja puudused
UDF-i eeliseid mainisin juba eespool. Pikemalt öeldes saab sellega teha arvutusi, mis ei ole võimalik tavaliste Exceli funktsioonidega. Lisaks saab sellega salvestada ja kasutada pikki ja keerulisi valemeid, muutes need üheks funktsiooniks. Ja te ei pea keerulisi valemeid ikka ja jälle kirjutama.
Räägime nüüd üksikasjalikumalt UDFi puudustest:
- UDF-i loomine nõuab VBA kasutamist. Sellest ei saa kuidagi mööda minna. See tähendab, et kasutaja ei saa UDF-i salvestada samamoodi nagu Exceli makrot. UDF-i peate ise looma. Te võite aga kopeerida ja kleepida oma funktsiooni osad eelnevalt salvestatud makrokoodist. Peate lihtsalt olema teadlik kohandatud funktsioonide piirangutest.
- Teine UDFi puudus on see, et nagu iga teine Exceli funktsioon, saab ta tagastada lahtrisse ainult ühe väärtuse või väärtuste massiivi. Ta lihtsalt teostab arvutusi, mitte midagi muud.
- Kui soovite oma töövihikut kolleegidega jagada, salvestage oma UDFid kindlasti samasse faili. Vastasel juhul ei tööta teie kohandatud funktsioonid nende jaoks.
- VBA redaktoriga loodud kohandatud funktsioonid on aeglasemad kui tavalised funktsioonid. See on eriti märgatav suurte tabelite puhul. Kahjuks on VBA siiani väga aeglane programmeerimiskeel. Seetõttu, kui teil on palju andmeid, püüdke võimaluse korral kasutada standardfunktsioone või luua UDF-id, kasutades funktsiooni LAMBDA.
Kohandatud funktsiooni piirangud:
- UDFid on mõeldud arvutuste tegemiseks ja väärtuse tagastamiseks. Neid ei saa kasutada makrode asemel.
- Nad ei saa muuta teiste lahtrite sisu (ainult aktiivne lahter).
- Funktsiooni nimed peavad järgima teatavaid reegleid. Näiteks ei saa kasutada nime, mis vastab Exceli algupärase funktsiooni nimele või lahtri aadressile, näiteks AB123.
- Teie kohandatud funktsioon ei tohi nimes sisaldada tühikuid, kuid see võib sisaldada alatähte. Eelistatud on siiski kasutada iga uue sõna alguses suurtähti (näiteks GetMaxBetween).
- UDF ei saa kopeerida ja kleepida lahtreid töölehe teistesse piirkondadesse.
- Nad ei saa aktiivset töölehte muuta.
- UDF-id ei saa aktiivse lahtri vormingut muuta. Kui soovite lahtri vormingut muuta erinevate väärtuste kuvamisel, peate kasutama tingimuslikku vormingut.
- Nad ei saa avada täiendavaid raamatuid.
- Neid ei saa kasutada makrode käivitamiseks, kasutades Application.OnTime.
- Kasutaja määratud funktsiooni ei saa luua makrokirjutaja abil.
- Funktsioonid ei ilmu Arendaja> Makros dialoog.
- Teie funktsioonid ilmuvad dialoogiaknasse ( Insert> Funktsioon ) ja funktsioonide loetelus ainult siis, kui need on deklareeritud kui Avalik (see on vaikimisi, kui ei ole märgitud teisiti).
- Kõik funktsioonid, mis on deklareeritud kui Eraldi ei ilmu funktsioonide loendisse.
Üsna aeglane töö, samuti mõned piirangud kasutamisel, võivad panna teid mõtlema: "Milleks need kohandatud funktsioonid?".
Nad võivad tulla kasuks ja tulevadki, kui me arvestame neile seatud piiranguid. Kui õpite, kuidas UDF-e õigesti luua ja kasutada, saate kirjutada oma funktsioonide raamatukogu. See laiendab oluliselt teie võimalusi tööd andmetega Excelis.
Minu jaoks on kohandatud funktsioonid suurepärased aja kokkuhoidjad. Ja kuidas on teiega? Kas te olete juba proovinud oma UDF-i luua? Kas teile meeldis see paremini kui Exceli põhifunktsioonid? Arutleme selle üle kommentaarides :)