Excel LAMBDA functie, De basis

Inhoud

Inleiding

In Maart 2021, kondigde Microsoft de nieuwe Excel LAMBDA functie aan. Met deze nieuwe functie kunnen we aangepaste functies maken, die functies kunnen vervangen die nu in VBA geschreven zijn. Deze aangepaste functies zijn om twee redenen krachtig:

  1. Iedere gebruiker die in staat is een formule te maken in Excel kan nu nieuwe functies definieren;
  2. Omdat gebruik gemaakt wordt van de ingebouwde functies en van de multi-threaded calculatie motor van Excel, is de snelheid van deze nieuwe LAMBDA functies significant hoger dan VBA UDF's.

Deze pagina legt de basis-principes uit van de nieuwe LAMBDA functie en laat zien hoe je deze functie omzet naar een eigen functie.

Merk op, dat de LAMBDA functie alleen beschikbaar is in Microsoft 365.

Download het bijbehorende bestand

De LAMBDA functie uitgelegd

Er bestaan al enkele goede artikelen over de nieuwe LAMBDA functie:

De Microsoft Research blog: LAMBDA: The ultimate Excel worksheet function

Microsoft Excel Help: LAMBDA functie

Als je al bekend bent met de LET functie, dan zal de struktuur van de LAMBDA functie er bekend uitzien. Hieronder een voorbeeld in haar eenvoudigste vorm:

=LAMBDA(x;x^2)

Alle argumenten behalve het laatste zijn invoerwaarden van de functie, het laatste argument is de berekening die het eindresultaat geeft. Dit houdt dus in dat de LAMBDA functie altijd tenminste één argument meer heeft dan het aantal invoerwaarden. In het bovenstaande voorbeeld is x de invoer en x^2 de resultaatberekening.

Voorbeeld: the ABC-formule

Iedereen die wiskunde heeft gehad op de middelbare school zal de formule van een parabool herkennen:

y=ax²+bx+c

En waarschijnlijk ook de formule om de nulpunten van de parabool te bepalen, de ABC-formule:

De ABC-formule

In wiskundetermen: de ABC-formule lost x op in ax²+bx+c=0 voor gegeven a, b en c.

Vertaald naar een Excel LAMBDA functie ziet dit er zo uit:

=LAMBDA(a;b;c;(-b+{-1\1}*WORTEL(b^2-4*a*c))/2/a)

(De {-1\1} is Excel's manier om beide resultaten uit de formule te verkrijgen, het gedraagt zich als het +/- teken in de ABC-formule)

ALs je deze formule in een gewone cel in Excel zet, dan geeft Excel een onverwacht resultaat weer, een nieuwe Excel foutcode:

#BEREKENEN!

Dit komt doordat we de benodigde argumenten niet aan de functie hebben doorgegeven. Als we de LAMBDA functie in een cel willen gebruiken, dan moeten de argumenten van de LAMBDA functie achter de formule worden geplaatst, tussen haakjes. Stel dat onze argumenten staan in de cellen A2, B2 en C2:

=LAMBDA(a;b;c;(-b+{-1\1}*SQRT(b^2-4*a*c))/2/a)(A2;B2;C2)

Een voorbeeld van de LAMBDA functie in een cel

Met als resultaat:

Een voorbeeld van de LAMBDA functie in een cel

Omzetten in een echte functie

Misschien begin je je af te vragen waar alle drukte voor nodig is, dit is nog steeds een (omslachtig uitziende) gewone formule in een cel. Niets bijzonders toch? Maar wacht even af, we komen er wel. Open het Namen beheren venster (Formule tab, Namen beheren knop):

Excel's venster Namen Beheren

en klik op de knop "Nieuw...". Voer deze details in:

Een nieuwe LAMBDA naam toevoegen

Merk op dat ik de moeite genomen heb om een opmerking toe te voegen, hieronder laat ik zien waarom dat nuttig is. Nadat je op OK hebt geklikt kan je deze nieuwe naam gebruiken alsof het een echte functie is:

De LAMBDA naam gebruiken in een formule

Presto! Een nieuwe gebruikers-gedefiniëerde functie!

Zoals beloofd laat ik nog even zien waarom die Opmerking in de naam definitie handig is. Selecteer een lege cel en begin te typen =Qua, Excel laat de auto-aanvullen keuzelijst zien, die de opmerking toont:

Het effect van een opmerking bij de naam

Dit is dus een handige manier om uitleg te tonen tijdens het invoeren van de functie!

Een ander voorbeeld

Naam van het werkblad in een cel

Een belangrijk voordeel van de LAMBDA functie is dat het je in staat stelt om een complexe formule in een eenvoudige functie om te zetten. Een goed voorbeeld is de veelgevraagde formule om de naam van het werkblad weer te geven in een cel. Hiervoor gebruik je normaal gesproken de CEL functie:

=CEL("address";A1)

Deze formule geeft als resultaat:

C:\Users\piete\Documents\[Lambda Demo JKP.xlsx]Lambda Explanations

In dit voorbeeld is de naam van het werkblad "Lambda Explanations". Om de informatie die ervoor staat te verwijderen, moeten we het vierkante haakje "]" vinden en alle tekst die daarna komt behouden:

=DEEL(CEL("filename";A1);VIND.ALLES("]";CEL("filename";A1))+1;LENGTE(CEL("filename";A1)))

Lelijk en onhandig. Laten we de eveneens nieuwe LET functie eens gebruiken om dit simpeler te maken:

=LET(f;CEL("filename";A1);DEEL(f;VIND.ALLES("]";f)+1;LENGTE(f))

Nu zijn we nog maar twee stappen verwijderd van het omzetten van deze formule in een Lambda.

1. Voeg de LAMBDA functie toe aan de formule (het enige argument is een cel op het werkblad waar je de naam van wilt weergeven)

=LAMBDA(cl;LET(f;CEL("filename";cl);DEEL(f;VIND.ALLES("]";f)+1;LENGTE(f)))

2. Definiëer een naam genaamd SheetName:

de SheetName naam 

Dat is alles, nu kan je de naam van een werkblad met deze simpele formule weergeven in een cel:

=SheetName(A1)

Advanced formula environment

Microsoft heeft ook een handige tool om Lambda formules te bewerken, genaamd de Advanced Formula Environment. Op de tab Invoegen klik je op "Invoegtoepassingen downloaden":

De knop Invoegtoepassingen downloaden

Zoek vervolgens naar "Advanced formula" en klik op 'Toevoegen':

Advanced formula environment invoegtoepassing

Lambdas delen

Download het bijbehorende bestand

Hoe zit het met het delen van lambda functies met je collega's? Het is relatief eenvoudig om Lambda formules van de ene werkmap te kopiëren naar de andere. Als je een lambda functie van werkmap A naar B wilt kopiëren, zorg er dan voor dat er een cel is in werkmap A met daarin de LAMBDA functie die gekopiëerd moet worden. Selecteer nu die cel en alle cellen waarin de argumenten staan van die LAMBDA en kopiëer ze. Zoek nu een leeg bereik in werkmap B en plak. Na het plakken kunnen deze cellen weer leeg gemaakt worden want de naam met de LAMBDA functie is reeds gekopiëerd. Mocht een lambda functie gebruik maken van andere lambda functies, dan zullen deze automatisch mee gekopiëerd worden.

Je kunt lambdas ook delen met anderen door er een public github gist van te maken.

Vervolgens kunnen anderen uw lambda's gebruiken door deze te importeren met de Advanced Formula Environment add-in.

De QuadraticEquation lambda kan je op deze manier importeren middels deze link:

https://gist.github.com/jkpieterse/568a6e267fb54ff71adb66299b447e70

Mijn water97 lambda's staan in deze gist: https://gist.github.com/jkpieterse/9f2f1d30f188ca20e3311e83b5a2a8a5

En een andere handige lambda is SheetName:

https://gist.github.com/jkpieterse/1541a4c51afa490958563fd7a9fdca0b

Meer informatie

Ik heb ook een artikel geschreven over hoe je een VBA UDF functie converteert naar een LAMBDA functie.

Collega MVP Mourad Louha heeft een goed stuk geschreven over het gebruiken van lambdas voor de manipulatie van matrices.


Vragen, suggesties en opmerkingen

Heeft u vragen, suggesties of opmerkingen? Gebruik dan dit formulier.

Mocht uw vraag niet direct relevant zijn voor deze pagina, maar een algemene Excel vraag betreffen, dan adviseer ik om deze hier te stellen: excelexperts.nl/forum/index.php.




Als u VBA code in uw commentaar plaatst, gebruik dan [VB] tags: [VB]Uw code[/VB].