Fordeler og ulemper med tilpassede funksjoner i Excel

  • Dele Denne
Michael Brown

Vi fortsetter serien med opplæringsprogrammer om brukerdefinerte funksjoner. I våre tidligere artikler ble vi kjent med egendefinerte funksjoner og lærte hvordan man lager og bruker dem. I denne håndboken vil vi se på detaljene ved bruk av disse funksjonene og se forskjellene mellom UDF-er og VBA-makroer.

I denne opplæringen lærer vi følgende:

    Vi håper denne artikkelen vil øke kunnskapen din om UDF og hjelpe deg å bruke dem enda mer effektivt i Excel-arbeidsbøkene.

    Er UDF og makro det samme?

    Både brukerdefinerte funksjoner og VBA makroer opprettes ved hjelp av VBA-editoren. Hva er forskjellen mellom dem og hva skal man gi preferanse til?

    Den viktigste forskjellen er at funksjonen utfører beregningen, og makroen utfører en handling. En brukerdefinert funksjon, som en vanlig Excel-funksjon, må skrives i en celle. Som et resultat av dens utførelse returnerer cellen en viss verdi. Samtidig er det umulig å endre verdiene til andre celler, så vel som noen egenskaper til gjeldende celle (spesielt formatering). Du kan imidlertid bruke en egendefinert funksjon i formler for betinget formatering.

    UDF- og VBA-makro fungerer på forskjellige måter. For eksempel, når du oppretter en UDF i Visual Basic Editor, starter du med en setning Function og avslutter med en End Function . Når du tar opp en makro, starter du med ensetning Sub og avsluttes med en End Sub.

    Ikke alle Visual Basic-operatorer kan brukes til å lage UDF-er. Av denne grunn er en makro en mer allsidig løsning.

    En makro krever ikke at brukeren sender noen argumenter (og kan heller ikke akseptere noen argumenter), i motsetning til en brukerdefinert funksjon.

    Poenget er at noen kommandoer for makroer kan bruke celleadresser eller formateringselementer (for eksempel farge). Hvis du flytter celler, legger til eller fjerner rader og kolonner, endrer formatet på celler, så kan du enkelt "bryte" makroene dine. Dette er spesielt mulig hvis du deler filen din med kolleger som ikke vet hvordan makroene dine fungerer.

    Du har for eksempel en fil med en perfekt fungerende makro. Denne formelen beregner prosentandelen av celle A1 til A4. Makro endrer fargen på disse cellene til gul. Et prosentformat er satt i den aktive cellen.

    Hvis du eller noen andre bestemmer seg for å sette inn en ny rad, vil makroen fortsette å lete etter verdien i A4-cellen ( 4,1-parameteren i UDF-en din), mislykkes og returnerer en feil:

    I dette tilfellet oppsto feilen på grunn av divisjon med null (ingen verdi i en nylig lagt til rad). Hvis makroen utfører, la oss si, summering, vil du ganske enkelt få et feil resultat. Men du vil ikke vite om det.

    I motsetning til makroer kan ikke brukerdefinerte funksjoner forårsake en så ubehagelig situasjon.

    Nedenfor ser du ytelsen tilde samme beregningene ved å bruke en UDF. Her kan du spesifisere inndataceller hvor som helst i regnearket, og du vil ikke møte noen uventede problemer når du endrer det.

    Jeg skrev følgende formel i C3:

    =UDF_vs_Macro(A1,A4)

    Så satte jeg inn en tom rad, og formelen endret seg som du kan se på skjermbildet ovenfor.

    Nå kan vi flytte en inndatacelle eller en celle med en funksjon hvor som helst. Resultatet vil alltid være korrekt.

    En ekstra fordel med å bruke UDF-er er at de automatisk oppdateres når verdien i inndatacellen endres. Når du bruker makroer, må du alltid sørge for at alle data er oppdatert.

    Med dette eksemplet i bakhodet foretrekker jeg å bruke UDF-er der det er mulig og kun bruke makroer for andre aktiviteter som ikke er kalkulerende.

    Begrensninger og ulemper ved bruk av UDF

    Jeg har allerede nevnt fordelene med UDF ovenfor. Lang historie kort, den kan utføre beregninger som ikke er mulig med standard Excel-funksjoner. I tillegg kan den lagre og bruke lange og komplekse formler, og gjøre dem om til en enkelt funksjon. Og du trenger ikke å skrive kompliserte formler om og om igjen.

    La oss nå snakke mer detaljert om UDFs mangler:

    • Å lage UDFer krever bruk av VBA. Det er ingen vei utenom det. Dette betyr at brukeren ikke kan ta opp UDF på samme måte som en Excel-makro. Du må lage UDF selv. Du kan imidlertid kopiere oglim inn deler av den tidligere registrerte makrokoden i funksjonen din. Du trenger bare å være klar over begrensningene til egendefinerte funksjoner.
    • En annen ulempe med UDF er at som enhver annen Excel-funksjon kan den bare returnere en enkelt verdi eller en rekke verdier inn i en celle. Den utfører ganske enkelt beregninger, ingenting mer.
    • Hvis du vil dele arbeidsboken din med kollegene dine, må du huske å lagre UDF-ene dine i samme fil. Ellers vil ikke de egendefinerte funksjonene dine fungere for dem.
    • Egendefinerte funksjoner opprettet med VBA-editoren er tregere enn vanlige funksjoner. Dette merkes spesielt på store bord. Dessverre er VBA et veldig tregt programmeringsspråk så langt. Derfor, hvis du har mye data, prøv å bruke standardfunksjoner når det er mulig, eller lag UDF-er ved å bruke LAMBDA-funksjonen.

    Begrensninger for egendefinerte funksjoner:

    • UDF-er er designet for å utføre beregninger og returnere en verdi. De kan ikke brukes i stedet for makroer.
    • De kan ikke endre innholdet i andre celler (bare den aktive cellen).
    • Funksjonsnavn må følge visse regler. Du kan for eksempel ikke bruke et navn som samsvarer med et innebygd Excel-funksjonsnavn eller en celleadresse, for eksempel AB123.
    • Den egendefinerte funksjonen kan ikke inneholde mellomrom i navnet, men den kan inneholde understrek. Den foretrukne metoden er imidlertid å bruke store bokstaver i begynnelsen av hver nyord (for eksempel GetMaxBetween).
    • En UDF kan ikke kopiere og lime inn celler til andre områder av regnearket.
    • De kan ikke endre det aktive regnearket.
    • UDF-er kan' t endre formateringen i den aktive cellen. Hvis du vil endre formateringen av en celle når du viser forskjellige verdier, bør du bruke betinget formatering.
    • De kan ikke åpne flere bøker.
    • De kan ikke brukes til å kjøre makroer ved hjelp av Application.OnTime .
    • En brukerdefinert funksjon kan ikke opprettes ved hjelp av makroopptakeren.
    • Funksjoner vises ikke i Utvikler > Dialogboksen Makroer .
    • Dine funksjoner vises i dialogboksen ( Sett inn > Funksjon ) og i listen over funksjoner bare hvis de er erklært som Offentlige (dette er standard, med mindre annet er angitt).
    • Enhver funksjon som er erklært som Privat vil ikke vises i funksjonslisten.

    En ganske treg operasjon , så vel som noen restriksjoner i bruk, kan få deg til å tenke: "Hva er bruken av disse egendefinerte funksjonene?"

    De kan være nyttige, og gjør det hvis vi er oppmerksomme på begrensningene som er pålagt dem. Hvis du lærer hvordan du oppretter og bruker UDF-er på riktig måte, kan du skrive funksjonsbiblioteket ditt. Dette vil i stor grad utvide din evne til å arbeide med data i Excel.

    For meg er egendefinerte funksjoner store tidsbesparende. Og hva med deg? Har du allerede prøvd å lage din egen UDF? Likte du detbedre enn de grunnleggende Excel-funksjonene? La oss diskutere det i kommentarene :)

    Michael Brown er en dedikert teknologientusiast med en lidenskap for å forenkle komplekse prosesser ved hjelp av programvareverktøy. Med mer enn ti års erfaring i teknologibransjen, har han forbedret ferdighetene sine i Microsoft Excel og Outlook, samt Google Sheets og Docs. Michaels blogg er dedikert til å dele sin kunnskap og ekspertise med andre, og gir enkle å følge tips og veiledninger for å forbedre produktivitet og effektivitet. Enten du er en erfaren profesjonell eller nybegynner, tilbyr Michaels blogg verdifull innsikt og praktiske råd for å få mest mulig ut av disse viktige programvareverktøyene.