Voordelen en nadelen van aangepaste functies in Excel

  • Deel Dit
Michael Brown

We zetten de reeks tutorials over gebruikersgedefinieerde functies voort. In onze vorige artikelen maakten we kennis met gebruikersgedefinieerde functies en leerden we hoe ze te maken en te gebruiken. In deze handleiding gaan we in op de bijzonderheden van het gebruik van deze functies en zien we de verschillen tussen UDF's en VBA-macro's.

In deze tutorial leren we het volgende:

    Wij hopen dat dit artikel uw kennis van UDF's zal vergroten en u zal helpen ze nog effectiever te gebruiken in uw Excel-werkmappen.

    Is UDF en Macro hetzelfde?

    Zowel gebruikersgedefinieerde functies als VBA-macro's worden gemaakt met behulp van de VBA-editor. Wat is het verschil tussen beide en wat verdient de voorkeur?

    Het belangrijkste verschil is dat de functie de berekening uitvoert, en de macro een bepaalde actie uitvoert. Een door de gebruiker gedefinieerde functie moet, net als een gewone Excel-functie, in een cel worden geschreven. Als gevolg van de uitvoering ervan retourneert de cel een bepaalde waarde. Tegelijkertijd is het onmogelijk om de waarden van andere cellen te wijzigen, evenals enkele eigenschappen van de huidige cel (met name,U kunt echter een aangepaste functie gebruiken in formules voor voorwaardelijke opmaak.

    UDF en VBA-macro werken op verschillende manieren. Wanneer u bijvoorbeeld een UDF maakt in de Visual Basic Editor, begint u met een verklaring Functie en eindigen met een Einde functie Wanneer u een macro opneemt, begint u met een verklaring Sub en eindigen met een End Sub.

    Niet alle Visual Basic-operatoren kunnen worden gebruikt om UDF's te maken. Daarom is een macro een veelzijdigere oplossing.

    Een macro vereist niet dat de gebruiker argumenten doorgeeft (en kan ook geen argumenten accepteren), in tegenstelling tot een door de gebruiker gedefinieerde functie.

    Het punt is dat sommige opdrachten van macro's gebruik kunnen maken van celadressen of opmaakelementen (bijvoorbeeld kleur). Als u cellen verplaatst, rijen en kolommen toevoegt of verwijdert, de opmaak van cellen verandert, dan kunt u uw macro's gemakkelijk "breken". Dit is vooral mogelijk als u uw bestand deelt met collega's die niet weten hoe uw macro's werken.

    U hebt bijvoorbeeld een bestand met een perfect werkende macro. Deze formule berekent het percentage van cel A1 tot en met A4. De macro verandert de kleur van deze cellen in geel. In de actieve cel wordt een percentageformaat ingesteld.

    Als u of iemand anders besluit een nieuwe rij in te voegen, zal de macro verder zoeken naar de waarde in cel A4 (de 4,1 parameter in uw UDF), mislukken en een fout terugsturen:

    In dit geval trad de fout op door deling door nul (geen waarde in een nieuw toegevoegde rij). Als de macro, laten we zeggen, optelt, dan krijg je gewoon een verkeerd resultaat. Maar dat weet je niet.

    In tegenstelling tot macro's kunnen gebruikersgedefinieerde functies een dergelijke onaangename situatie niet veroorzaken.

    Hieronder ziet u de uitvoering van dezelfde berekeningen met behulp van een UDF. Hier kunt u overal in het werkblad invoercellen opgeven en zult u geen onverwachte problemen ondervinden bij het wijzigen ervan.

    Ik schreef de volgende formule in C3:

    =UDF_vs_Macro(A1,A4)

    Daarna voegde ik een lege rij in, en de formule veranderde zoals u kunt zien in de schermafbeelding hierboven.

    Nu kunnen we een invoercel of een cel met een functie overal naartoe verplaatsen. Het resultaat zal altijd juist zijn.

    Een bijkomend voordeel van het gebruik van UDF's is dat ze automatisch worden bijgewerkt wanneer de waarde in de invoercel verandert. Wanneer u macro's gebruikt, moet u er altijd voor zorgen dat alle gegevens actueel zijn.

    Met dit voorbeeld in gedachten zou ik er de voorkeur aan geven waar mogelijk UDF's te gebruiken en macro's alleen voor andere niet-berekeningsactiviteiten.

    Beperkingen en nadelen van het gebruik van UDF's

    De voordelen van UDF heb ik hierboven al genoemd. Lang verhaal kort, het kan berekeningen uitvoeren die niet mogelijk zijn met standaard Excel functies. Bovendien kan het lange en complexe formules opslaan en gebruiken, en ze omzetten in een enkele functie. En u hoeft niet steeds opnieuw ingewikkelde formules te schrijven.

    Laten we nu dieper ingaan op de tekortkomingen van de UDF:

    • Het maken van UDF's vereist het gebruik van VBA. Dat betekent dat de gebruiker de UDF niet op dezelfde manier kan opnemen als een Excel-macro. U moet de UDF zelf maken. U kunt echter delen van de eerder opgenomen macrocode kopiëren en plakken in uw functie. U moet zich alleen bewust zijn van de beperkingen van aangepaste functies.
    • Een ander nadeel van een UDF is dat deze, net als elke andere Excel-functie, slechts een enkele waarde of een array van waarden kan retourneren in een cel. Hij voert eenvoudigweg berekeningen uit, meer niet.
    • Als u uw werkmap wilt delen met uw collega's, moet u uw UDF's in hetzelfde bestand opslaan. Anders werken uw aangepaste functies niet voor hen.
    • Aangepaste functies gemaakt met de VBA-editor zijn trager dan gewone functies. Dit is vooral merkbaar in grote tabellen. Helaas is VBA tot nu toe een zeer trage programmeertaal. Probeer daarom bij veel gegevens zoveel mogelijk standaardfuncties te gebruiken, of maak UDF's met de functie LAMBDA.

    Aangepaste functiebeperkingen:

    • UDF's zijn bedoeld om berekeningen uit te voeren en een waarde terug te geven. Ze kunnen niet worden gebruikt in plaats van macro's.
    • Zij kunnen de inhoud van andere cellen niet wijzigen (alleen de actieve cel).
    • Functienamen moeten aan bepaalde regels voldoen. U kunt bijvoorbeeld geen naam gebruiken die overeenkomt met een native Excel-functienaam of een celadres, zoals AB123.
    • Uw aangepaste functie kan geen spaties in de naam bevatten, maar wel het teken underscore. De voorkeur gaat echter uit naar het gebruik van hoofdletters aan het begin van elk nieuw woord (bijvoorbeeld GetMaxBetween).
    • Een UDF kan geen cellen kopiëren en plakken naar andere delen van het werkblad.
    • Zij kunnen het actieve werkblad niet wijzigen.
    • UDF's kunnen de opmaak in de actieve cel niet wijzigen. Als u de opmaak van een cel wilt wijzigen bij het weergeven van verschillende waarden, moet u voorwaardelijke opmaak gebruiken.
    • Ze kunnen geen extra boeken openen.
    • Ze kunnen niet worden gebruikt om macro's uit te voeren met behulp van Application.OnTime.
    • Een door de gebruiker gedefinieerde functie kan niet worden gemaakt met de macro-recorder.
    • Functies verschijnen niet in de Ontwikkelaar> Macro's dialoog.
    • Uw functies verschijnen in het dialoogvenster ( Invoegen> Functie ) en in de lijst van functies alleen als ze zijn gedeclareerd als Publiek (dit is de standaard, tenzij anders vermeld).
    • Alle functies die zijn gedeclareerd als Privé verschijnt niet in de lijst met functies.

    Een vrij trage werking, evenals enkele beperkingen in het gebruik, kunnen u doen denken: "Wat is het nut van deze aangepaste functies?".

    Ze kunnen van pas komen, en dat doen ze ook, als we de beperkingen die eraan verbonden zijn in acht nemen. Als u leert hoe u UDF's op de juiste manier maakt en gebruikt, kunt u uw eigen bibliotheek van functies schrijven. Dit zal uw mogelijkheden om met gegevens in Excel te werken sterk uitbreiden.

    Voor mij zijn aangepaste functies een grote tijdsbesparing. En hoe zit het met jou? Heb je al geprobeerd je eigen UDF te maken? Vond je het beter dan de basisfuncties van Excel? Laten we het bespreken in de reacties :)

    Michael Brown is een toegewijde technologieliefhebber met een passie voor het vereenvoudigen van complexe processen met behulp van softwaretools. Met meer dan tien jaar ervaring in de technische industrie heeft hij zijn vaardigheden in Microsoft Excel en Outlook, evenals Google Spreadsheets en Documenten aangescherpt. Michael's blog is gewijd aan het delen van zijn kennis en expertise met anderen, met eenvoudig te volgen tips en tutorials voor het verbeteren van de productiviteit en efficiëntie. Of je nu een doorgewinterde professional of een beginner bent, Michaels blog biedt waardevolle inzichten en praktisch advies om het meeste uit deze essentiële softwaretools te halen.