Excel LAMBDA-funktionen giver mulighed for at oprette brugerdefinerede funktioner, der kan genbruges i en projektmappe uden VBA eller makroer.
Syntaks
=LAMBDA (parameter; ...; beregning)
Argumenter
Parameter – En inputværdi for funktionen.
Beregning – Beregningen, der skal udføres som resultatet af funktionen. Skal være sidste argument.
Noter
LAMBDA-funktionen giver mulighed for at oprette en brugerdefineret funktion i Excel. Når den først er defineret og navngivet, kan en LAMBDA-funktion bruges hvor som helst i en projektmappe. LAMBDA-funktioner kan være meget enkle eller ret komplekse, idet de samler mange Excel-funktioner i én formel. En brugerdefineret LAMBDA-funktion kræver ikke VBA eller makroer.
I computerprogrammering refererer udtrykket LAMBDA til en anonym funktion eller udtryk. En anonym funktion er en funktion defineret uden navn. I Excel bruges LAMBDA-funktionen først til at oprette en generisk (unavngiven) formel. Når en generisk version er blevet oprettet og testet, overføres den til Navnestyringen, hvor den formelt defineres og navngives.
En af de vigtigste fordele ved en brugerdefineret LAMBDA-funktion er, at logikken i formlen kun findes ét sted. Det betyder, at der kun er én kopi af koden, der skal opdateres, når der løses problemer eller opdateres funktionalitet, og ændringer vil automatisk spredes til alle forekomster af LAMBDA-funktionen i en projektmappe.
LET-funktionen bruges ofte sammen med LAMBDA-funktionen. LET giver mulighed for at erklære variabler og tildele værdier i en formel. Dette gør mere komplicerede formler lettere at læse ved at reducere redundant kode. LET-funktionen kan også forbedre ydeevnen ved at reducere antallet af beregninger udført af en formel.
Oprettelse af en LAMBDA-funktion
LAMBDA-funktioner oprettes og fejlsøges typisk i formellinjen i et regneark og flyttes derefter ind i navnehåndteringen for at tildele et navn, der kan bruges hvor som helst i en projektmappe.
Der er fire grundlæggende trin i oprettelsen og brugen af en brugerdefineret LAMBDA-funktion:
- Verificér den logik, du vil bruge, med en standardformel
- Opret og test en generisk (unavngivet) LAMBDA-version af formlen
- Navngiv og definer LAMBDA-formlen med navneadministratoren
- Kald den nye brugerdefinerede funktion med det definerede navn
Eksemplerne nedenfor gennemgår disse trin mere detaljeret.
Eksempel 1 – grundlæggende eksempel
For at illustrere, hvordan LAMBDA virker, lad os da begynde med en meget simpel formel:
=x*y // vi ganger x og y
I Excel vil denne formel typisk bruge cellereferencer som dette:
=A4*B4 // med cellereferencer
Som du kan se, fungerer formlen fint, så vi er klar til at gå videre til at lave en generisk LAMBDA-formel (unavngivet version). Den første ting at overveje er, om formlen kræver input (parametre). I dette tilfælde er svaret “ja” – formlen kræver en værdi for x og en værdi for y. Når det er fastslået, starter vi med LAMBDA-funktionen og tilføjer de nødvendige parametre til brugerinput:
=LAMBDA(x;y // begynder med inputparametre
Dernæst skal vi tilføje den faktiske beregning, x*y:
=LAMBDA(x;y;x*y)(A4;B4)
Hvis du indtaster formlen på dette tidspunkt, får du en #BEREGN! fejl. Dette sker, fordi formlen ikke har nogen inputværdier at arbejde med, da der ikke længere er nogen cellereferencer. For at teste formlen skal vi bruge en speciel syntaks som denne:
=LAMBDA(x;y;x*y)(A4;B4) // test syntaks
Denne syntaks, hvor parametre angives i slutningen af en LAMBDA-funktion i et separat sæt parenteser, er unik for LAMBDA-funktioner. Dette gør det muligt at teste formlen direkte i regnearket, før LAMBDA’en navngives. I skærmbilledet nedenfor kan du se, at den generiske LAMBDA-funktion i F5 returnerer nøjagtigt det samme resultat som den oprindelige formel i E4:
Vi er nu klar til at navngive LAMBDA-funktionen med Navnestyring. Først skal du kopiere formlen uden at inkludere testparametrene i slutningen. Åbn derefter Navnestyring med genvejen Ctrl + F3, og klik på Nyt.
Indtast navnet “XGY” i dialogboksen Nyt navn, lad Omfang være indstillet til Projektmappe, og indsæt den formel, du kopierede, i inputområdet “Refererer til”. (Tip: Brug tabulatortasten til at navigere til feltet “Refererer til”).
Sørg for, at formlen begynder med et lighedstegn (=). Nu hvor LAMBDA-formlen har et navn, kan den bruges i projektmappen som enhver anden funktion. I billedet nedenfor er formlen i F4, kopieret ned:
=XGY(A4;B4)
Skærmbilledet nedenfor viser, hvordan det ser ud i projektmappen:
Den nye brugerdefinerede funktion returnerer det samme resultat som de to andre formler.
Eksempel 2 – rumfanget af en kugle
I dette eksempel konverterer vi en formel til at beregne rumfanget af en kugle til en brugerdefineret LAMBDA-funktion. Den generelle Excel-formel til beregning af rumfanget af en kugle er:
=4/3*PI()*A1^3 // rumfanget af en kugle
hvor A1 repræsenterer radius. Skærmbilledet nedenfor viser denne formel i aktion:
Bemærk, at denne formel kun kræver et input (radius) for at beregne rumfanget, så vores LAMBDA-funktion behøver kun én parameter (r), som vises som det første argument. Her er formlen konverteret til LAMBDA:
=LAMBDA(r;4/3*PI()*r^3) // generisk lambda
Tilbage i regnearket har vi erstattet den originale formel med den generiske LAMBDA-version. Bemærk, at vi bruger testsyntaksen, som giver os mulighed for at benytte A4 til radius:
Resultaterne fra den generiske LAMBDA-formel er nøjagtig de samme som den originale formel, så det næste trin er at definere og navngive denne LAMBDA-formel med Navnestyringen, som forklaret ovenfor. Navnet, der bruges til en LAMBDA-funktion, kan være et hvilket som helst gyldigt Excel-navn. I dette tilfælde vil vi navngive formlen “SfæreRumfang”.
Tilbage i regnearket har vi erstattet den generiske (unavngivne) LAMBDA-formel med den navngivne LAMBDA-version og indtastet A4 for r. Bemærk, at resultaterne returneret af den tilpassede SfæreRumfang-funktion er nøjagtig de samme som tidligere resultater.
Eksempel 3 – tæl ord
I dette eksempel vil vi oprette en LAMBDA-funktion til at tælle ord. Excel har ikke en funktion til dette formål, men du kan tælle ord i en celle med en brugerdefineret formel baseret på funktionerne LÆNGDE og ERSTAT som dette:
=LÆNGDE(FJERN.OVERFLØDIGE.BLANKE(A2))-LÆNGDE(UDSKIFT(A2;" ";""))+1
Her er formlen i aktion i et regneark:
Bemærk, at vi får et forkert resultat på 1, når formlen møder en tom celle (A8). Vi behandler dette problem nedenfor.
Denne formel kræver kun ét input, som er den tekst, der indeholder ord. I vores LAMBDA-funktion vil vi navngive dette argument “tekst”. Her er formlen konverteret til LAMBDA:
=LAMBDA(tekst;LÆNGDE(FJERN.OVERFLØDIGE.BLANKE(A2))-LÆNGDE(UDSKIFT(A2;" ";""))+1)
Bemærk “tekst” vises som det første argument, og beregningen er det andet og sidste argument. I billedet nedenfor har vi erstattet den originale formel med den generiske LAMBDA-version. Bemærk, at vi bruger testsyntaksen, som giver os mulighed for at benytte B5 til tekst:
=LAMBDA(tekst;LÆNGDE(FJERN.OVERFLØDIGE.BLANKE(A2))-LÆNGDE(UDSKIFT(A2;" ";""))+1)(A2)
Resultaterne fra den generiske LAMBDA-formel er de samme som den originale formel, så næste trin er at definere og navngive denne LAMBDA-formel med Navnestyringen, som forklaret tidligere. Vi vil navngive denne formel “OrdOptælling”.
Nedenfor har vi erstattet den generiske (unavngivne) LAMBDA-formel med den navngivne LAMBDA-version og indtastet A2 for tekst. Bemærk, at vi får nøjagtig de samme resultater.
Formlen, der bruges i Navnestyringen til at definere OrdOptælling, er den samme som ovenfor uden testsyntaksen:
=LAMBDA(tekst;LÆNGDE(FJERN.OVERFLØDIGE.BLANKE(A2))-LÆNGDE(UDSKIFT(A2;" ";""))+1)
Løs problemet med tomme celler
Som nævnt ovenfor returnerer formlen ovenfor et forkert resultat på 1, når en celle er tom. Dette problem kan løses ved at erstatte +1 med koden nedenfor:
=LÆNGDE(FJERN.OVERFLØDIGE.BLANKE(A2))-LÆNGDE(UDSKIFT(A2;" ";""))+(LÆNGDE(FJERN.OVERFLØDIGE.BLANKE(A2))>0)
For at opdatere den eksisterende navngivne LAMBDA-formel skal vi igen bruge navneadministratoren:
- Åbn Navnestyringen.
- Vælg navnet ” OrdOptælling” og klik på “Rediger”.
- Erstat koden “Refererer til” med denne formel:
=LAMBDA(tekst;LÆNGDE(FJERN.OVERFLØDIGE.BLANKE(A2))-LÆNGDE(UDSKIFT(A2;" ";""))+(LÆNGDE(FJERN.OVERFLØDIGE.BLANKE(A2))>0))
Når Navnestyringen er lukket, fungerer OrdOptælling korrekt på tomme celler, som det ses nedenfor:
Bemærk: ved at opdatere koden én gang i Navnestyringen, opdateres alle forekomster af OrdOptælling-formlen på én gang. Dette er en vigtig fordel ved brugerdefinerede funktioner, der er oprettet med LAMBDA – formelopdateringer kan administreres ét sted.
3 Comments