Voor- en nadele van pasgemaakte funksies in Excel

  • Deel Dit
Michael Brown

Ons gaan voort met die reeks tutoriale oor gebruikergedefinieerde funksies. In ons vorige artikels het ons kennis gemaak met pasgemaakte funksies en geleer hoe om dit te skep en te gebruik. In hierdie handleiding sal ons kyk na die besonderhede van die gebruik van hierdie funksies en die verskille tussen UDF's en VBA-makro's sien.

In hierdie tutoriaal sal ons die volgende leer:

    Ons hoop hierdie artikel sal jou kennis van UDF ’n hupstoot gee en jou help om dit selfs meer effektief in jou Excel-werkboeke te gebruik.

    Is UDF en Makro dieselfde ding?

    Beide gebruikergedefinieerde funksies en VBA Makro's word geskep met behulp van die VBA-redigeerder. Wat is die verskil tussen hulle en waaraan om voorkeur te gee?

    Die belangrikste verskil is dat die funksie die berekening uitvoer en die makro een of ander aksie uitvoer. 'n Gebruikergedefinieerde funksie, soos 'n gewone Excel-funksie, moet in 'n sel geskryf word. As gevolg van die uitvoering daarvan gee die sel 'n mate van waarde terug. Terselfdertyd is dit onmoontlik om die waardes van ander selle te verander, sowel as sommige eienskappe van die huidige sel (veral formatering). Jy kan egter 'n pasgemaakte funksie in voorwaardelike formatering formules gebruik.

    UDF en VBA makro werk op verskillende maniere. Byvoorbeeld, wanneer jy 'n UDF in die Visual Basic Editor skep, begin jy met 'n stelling Funksie en eindig met 'n Eindfunksie . Wanneer jy 'n makro opneem, begin jy met 'nstelling Sub en eindig met 'n End Sub.

    Nie alle Visual Basic-operateurs kan gebruik word om UDF's te skep nie. Om hierdie rede is 'n makro 'n meer veelsydige oplossing.

    'n Makro vereis nie dat die gebruiker enige argumente deurgee nie (dit kan ook nie enige argumente aanvaar nie), anders as 'n gebruikergedefinieerde funksie.

    Die punt is dat sommige opdragte van makro's seladresse of formateringselemente (byvoorbeeld kleur) kan gebruik. As jy selle skuif, rye en kolomme byvoeg of verwyder, die formaat van selle verander, dan kan jy maklik jou makros "breek". Dit is veral moontlik as jy jou lêer met kollegas deel wat nie weet hoe jou makro's werk nie.

    Jy het byvoorbeeld 'n lêer met 'n perfek werkende makro. Hierdie formule bereken die persentasie van sel A1 tot A4. Makro verander die kleur van hierdie selle na geel. 'n Persentasieformaat word in die aktiewe sel gestel.

    As jy of iemand anders besluit om 'n nuwe ry in te voeg, sal die makro voortgaan om die waarde in die A4-sel te soek ( die 4,1 parameter in jou UDF), misluk en gee 'n fout terug:

    In hierdie geval het die fout plaasgevind as gevolg van deling deur nul (geen waarde in 'n nuut bygevoegde ry). As die makro werk, kom ons sê, opsomming, dan sal jy eenvoudig 'n verkeerde resultaat kry. Maar jy sal nie daarvan weet nie.

    In teenstelling met makro's, kan gebruikergedefinieerde funksies nie so 'n onaangename situasie veroorsaak nie.

    Hieronder sien jy die prestasie vandieselfde berekeninge met behulp van 'n UDF. Hier kan jy invoerselle enige plek in die werkblad spesifiseer en jy sal nie enige onverwagte probleme ondervind wanneer jy dit verander nie.

    Ek het die volgende formule in C3 geskryf:

    =UDF_vs_Macro(A1,A4)

    Toe het ek 'n leë ry ingevoeg, en die formule het verander soos jy in die skermkiekie hierbo kan sien.

    Nou kan ons 'n invoersel of 'n sel met 'n funksie enige plek skuif. Die resultaat sal altyd korrek wees.

    'n Bykomende voordeel van die gebruik van UDF's is dat hulle outomaties bywerk wanneer die waarde in die invoersel verander. Wanneer jy makro's gebruik, moet jy altyd verseker dat alle data op datum is.

    Om hierdie voorbeeld in gedagte te hou, sal ek verkies om UDF's te gebruik waar moontlik en makro's slegs vir ander nie-berekeningsaktiwiteite te gebruik.

    Beperkings en nadele van die gebruik van UDF

    Ek het reeds die voordele van UDF hierbo genoem. Lang storie kort, dit kan berekeninge uitvoer wat nie moontlik is met standaard Excel-funksies nie. Daarbenewens kan dit lang en komplekse formules stoor en gebruik, wat dit in 'n enkele funksie verander. En jy hoef nie ingewikkelde formules oor en oor te skryf nie.

    Kom ons praat nou in meer besonderhede oor die UDF se tekortkominge:

    • Om UDF's te skep, vereis die gebruik van VBA. Daar is geen manier om dit te doen nie. Dit beteken dat die gebruiker nie die UDF op dieselfde manier as 'n Excel-makro kan opneem nie. Jy moet self die UDF skep. Jy kan egter kopieer enplak gedeeltes van die voorheen aangetekende makro-kode in jou funksie. Jy moet net bewus wees van die beperkings van pasgemaakte funksies.
    • Nog 'n nadeel van UDF is dat dit net soos enige ander Excel-funksie net 'n enkele waarde of 'n verskeidenheid waardes in 'n sel kan terugstuur. Dit voer eenvoudig berekeninge uit, niks meer nie.
    • As jy jou werkboek met jou kollegas wil deel, maak seker dat jy jou UDF's in dieselfde lêer stoor. Andersins sal jou pasgemaakte funksies nie vir hulle werk nie.
    • Gepasmaakte funksies wat met die VBA-redigeerder geskep is, is stadiger as gewone funksies. Dit is veral opvallend by groot tafels. Ongelukkig is VBA tot dusver 'n baie stadige programmeertaal. As jy dus baie data het, probeer om standaardfunksies te gebruik waar moontlik, of skep UDF's deur die LAMBDA-funksie te gebruik.

    Gepasmaakte funksiebeperkings:

    • UDF's is ontwerp om berekeninge uit te voer en 'n waarde terug te gee. Hulle kan nie in die plek van makro's gebruik word nie.
    • Hulle kan nie die inhoud van enige ander selle verander nie (slegs die aktiewe sel).
    • Funksiename moet sekere reëls volg. Jy kan byvoorbeeld nie 'n naam gebruik wat by 'n inheemse Excel-funksienaam of 'n seladres pas nie, soos AB123.
    • Jou gepasmaakte funksie kan nie spasies in die naam bevat nie, maar dit kan die onderstreepkarakter insluit. Die voorkeurmetode is egter om hoofletters aan die begin van elke nuwe te gebruikwoord (byvoorbeeld GetMaxBetween).
    • 'n UDF kan nie selle na ander areas van die werkblad kopieer en plak nie.
    • Hulle kan nie die aktiewe werkblad verander nie.
    • UDF's kan' t verander die formatering in die aktiewe sel. As jy die formatering van 'n sel wil verander wanneer jy verskillende waardes vertoon, moet jy voorwaardelike formatering gebruik.
    • Hulle kan nie bykomende boeke oopmaak nie.
    • Hulle kan nie gebruik word om makro's te laat loop deur Application.OnTime te gebruik nie. .
    • 'n Gebruikergedefinieerde funksie kan nie geskep word deur die makro-opnemer te gebruik nie.
    • Funksies verskyn nie in die Ontwikkelaar > Makro's -dialoog.
    • Jou funksies sal slegs in die dialoogkassie ( Voeg in > Funksie ) en in die lys funksies verskyn as hulle as Publiek<7 verklaar is> (dit is die verstek, tensy anders vermeld).
    • Enige funksies wat as Privaat verklaar word, sal nie in die kenmerklys verskyn nie.

    'n Redelik stadige bewerking , sowel as 'n paar beperkings in gebruik, kan jou dalk laat dink: "Wat is die nut van hierdie pasgemaakte funksies?"

    Hulle kan handig te pas kom, en doen as ons bewus is van die beperkings wat aan hulle opgelê word. As jy leer hoe om UDF's behoorlik te skep en te gebruik, kan jy jou biblioteek van funksies skryf. Dit sal jou vermoë om met data in Excel te werk grootliks uitbrei.

    Wat my betref, pasgemaakte funksies is groot tydbesparings. En wat van jou? Het jy al probeer om jou eie UDF te skep? Het jy daarvan gehoubeter as die basiese Excel-funksies? Kom ons bespreek dit in die Kommentaar :)

    Michael Brown is 'n toegewyde tegnologie-entoesias met 'n passie om komplekse prosesse te vereenvoudig deur sagteware-instrumente te gebruik. Met meer as 'n dekade se ondervinding in die tegnologiebedryf, het hy sy vaardighede in Microsoft Excel en Outlook, sowel as Google Sheets en Docs, opgeskerp. Michael se blog is toegewy daaraan om sy kennis en kundigheid met ander te deel, en verskaf maklik-om-te volg wenke en tutoriale vir die verbetering van produktiwiteit en doeltreffendheid. Of jy nou 'n ervare professionele persoon of 'n beginner is, Michael se blog bied waardevolle insigte en praktiese raad om die meeste uit hierdie noodsaaklike sagteware-nutsmiddels te kry.