Fordele og ulemper ved brugerdefinerede funktioner i Excel

  • Del Dette
Michael Brown

Vi fortsætter serien af vejledninger om brugerdefinerede funktioner. I vores tidligere artikler har vi stiftet bekendtskab med brugerdefinerede funktioner og lært at oprette og bruge dem. I denne vejledning vil vi se nærmere på de specifikke aspekter af brugen af disse funktioner og se forskellene mellem UDF'er og VBA-makroer.

I denne vejledning lærer vi følgende:

    Vi håber, at denne artikel vil øge din viden om UDF'er og hjælpe dig med at bruge dem endnu mere effektivt i dine Excel-arbejdsmapper.

    Er UDF og makro det samme?

    Både brugerdefinerede funktioner og VBA-makroer oprettes ved hjælp af VBA-editoren. Hvad er forskellen mellem dem, og hvad skal man foretrække?

    Den vigtigste forskel er, at funktionen udfører beregningen, mens makroen udfører en handling. En brugerdefineret funktion skal ligesom en almindelig Excel-funktion skrives i en celle. Som følge af dens udførelse returnerer cellen en værdi. Samtidig er det umuligt at ændre værdierne i andre celler samt nogle egenskaber for den aktuelle celle (især,Du kan dog bruge en brugerdefineret funktion i formler for betinget formatering.

    UDF- og VBA-makroer fungerer på forskellige måder. Når du f.eks. opretter en UDF i Visual Basic-editoren, starter du med en erklæring Funktion og afsluttes med en Slutfunktion Når du optager en makro, starter du med en erklæring Under og afsluttes med en End Sub.

    Det er ikke alle Visual Basic-operatorer, der kan bruges til at oprette UDF'er. Derfor er en makro en mere alsidig løsning.

    En makro kræver ikke, at brugeren overfører nogen argumenter (og kan heller ikke acceptere nogen argumenter), i modsætning til en brugerdefineret funktion.

    Pointen er, at nogle kommandoer i makroer kan bruge celleadresser eller formateringselementer (f.eks. farve). Hvis du flytter celler, tilføjer eller fjerner rækker og kolonner eller ændrer cellernes format, kan du nemt "ødelægge" dine makroer. Dette er især muligt, hvis du deler din fil med kolleger, som ikke ved, hvordan dine makroer fungerer.

    Du har f.eks. en fil med en perfekt fungerende makro. Denne formel beregner procentdelen af celle A1 til A4. Makroen ændrer farven på disse celler til gul. Der er indstillet et procentformat i den aktive celle.

    Hvis du eller en anden vælger at indsætte en ny række, vil makroen fortsætte med at lede efter værdien i A4-cellen (parameteren 4,1 i din UDF), fejle og returnere en fejl:

    I dette tilfælde opstod fejlen på grund af division med nul (ingen værdi i en nyligt tilføjet række). Hvis makroen udfører, lad os sige, summering, vil du simpelthen få et forkert resultat. Men du vil ikke vide det.

    I modsætning til makroer kan brugerdefinerede funktioner ikke forårsage en sådan ubehagelig situation.

    Nedenfor kan du se udførelsen af de samme beregninger ved hjælp af en UDF. Her kan du angive inputceller hvor som helst i regnearket, og du vil ikke opleve uventede problemer, når du ændrer det.

    Jeg skrev følgende formel i C3:

    =UDF_vs_Macro(A1,A4)

    Derefter indsatte jeg en tom række, og formlen ændrede sig, som du kan se på skærmbilledet ovenfor.

    Nu kan vi flytte en indtastningscelle eller en celle med en funktion hvor som helst hen, og resultatet vil altid være korrekt.

    En yderligere fordel ved at bruge UDF'er er, at de automatisk opdateres, når værdien i indtastningscellen ændres. Når du bruger makroer, skal du altid sikre dig, at alle data er ajourført.

    Med dette eksempel in mente ville jeg foretrække at bruge UDF'er, hvor det er muligt, og kun bruge makroer til andre aktiviteter, der ikke vedrører beregninger.

    Begrænsninger og ulemper ved at bruge UDF

    Jeg har allerede nævnt fordelene ved UDF ovenfor. Kort fortalt kan den udføre beregninger, som ikke er mulige med standard Excel-funktioner. Desuden kan den gemme og bruge lange og komplekse formler og omdanne dem til en enkelt funktion. Og du behøver ikke at skrive komplicerede formler igen og igen.

    Lad os nu tale mere detaljeret om UDF's mangler:

    • Oprettelse af UDF'er kræver brug af VBA. Der er ingen vej udenom. Det betyder, at brugeren ikke kan registrere UDF'en på samme måde som en Excel-makro. Du skal selv oprette UDF'en. Du kan dog kopiere og indsætte dele af den tidligere registrerede makrokode i din funktion. Du skal blot være opmærksom på begrænsningerne ved brugerdefinerede funktioner.
    • En anden ulempe ved UDF er, at den som enhver anden Excel-funktion kun kan returnere en enkelt værdi eller et array af værdier til en celle. Den udfører blot beregninger, intet andet.
    • Hvis du vil dele din projektmappe med dine kolleger, skal du sørge for at gemme dine UDF'er i den samme fil. Ellers vil dine brugerdefinerede funktioner ikke fungere for dem.
    • Brugerdefinerede funktioner, der oprettes med VBA-editoren, er langsommere end almindelige funktioner. Dette er især mærkbart i store tabeller. Desværre er VBA indtil videre et meget langsomt programmeringssprog. Hvis du har mange data, skal du derfor forsøge at bruge standardfunktioner, når det er muligt, eller oprette UDF'er ved hjælp af LAMBDA-funktionen.

    Begrænsninger for brugerdefinerede funktioner:

    • UDF'er er designet til at udføre beregninger og returnere en værdi. De kan ikke bruges i stedet for makroer.
    • De kan ikke ændre indholdet af andre celler (kun den aktive celle).
    • Funktionsnavne skal følge visse regler. Du kan f.eks. ikke bruge et navn, der svarer til et oprindeligt Excel-funktionsnavn eller en celleadresse, f.eks. AB123.
    • Din brugerdefinerede funktion kan ikke indeholde mellemrum i navnet, men den kan indeholde understregningstegn. Den foretrukne metode er dog at bruge store bogstaver i begyndelsen af hvert nyt ord (f.eks. GetMaxBetween).
    • En UDF kan ikke kopiere og indsætte celler til andre områder i regnearket.
    • De kan ikke ændre det aktive regneark.
    • UDF'er kan ikke ændre formateringen i den aktive celle. Hvis du vil ændre formateringen af en celle, når du viser forskellige værdier, skal du bruge betinget formatering.
    • De kan ikke åbne yderligere bøger.
    • De kan ikke bruges til at køre makroer ved hjælp af Application.OnTime.
    • Der kan ikke oprettes en brugerdefineret funktion ved hjælp af makrooptageren.
    • Funktioner vises ikke i Udvikler> Makroer dialog.
    • Dine funktioner vises i dialogboksen ( Indsæt> Funktion ) og i listen over funktioner kun, hvis de er deklareret som Offentlig (dette er standard, medmindre andet er angivet).
    • Alle funktioner, der er erklæret som Privat vises ikke på funktionslisten.

    En ret langsom drift samt nogle begrænsninger i brugen kan få dig til at tænke: "Hvad er formålet med disse brugerdefinerede funktioner?"

    De kan være nyttige, og det gør de, hvis vi er opmærksomme på de begrænsninger, de er underlagt. Hvis du lærer at oprette og bruge UDF'er korrekt, kan du skrive dit eget funktionsbibliotek. Det vil i høj grad udvide dine muligheder for at arbejde med data i Excel.

    For mig er brugerdefinerede funktioner en stor tidsbesparelse. Og hvad med dig? Har du allerede prøvet at oprette din egen UDF? Kunne du bedre lide det end de grundlæggende Excel-funktioner? Lad os diskutere det i kommentarerne :)

    Michael Brown er en dedikeret teknologientusiast med en passion for at forenkle komplekse processer ved hjælp af softwareværktøjer. Med mere end ti års erfaring i teknologibranchen har han finpudset sine færdigheder i Microsoft Excel og Outlook samt Google Sheets og Docs. Michaels blog er dedikeret til at dele sin viden og ekspertise med andre og giver nemme at følge tips og vejledninger til at forbedre produktiviteten og effektiviteten. Uanset om du er en erfaren professionel eller nybegynder, tilbyder Michaels blog værdifuld indsigt og praktiske råd til at få mest muligt ud af disse vigtige softwareværktøjer.