LAMBDA crée votre propre fonction à partir d'une formule. Vous choisissez les entrées, écrivez le calcul une seule fois, puis le réutilisez : soit sur place dans des fonctions comme MAP, soit enregistré comme fonction nommée que vous pouvez appeler de n'importe où dans le classeur, comme SUM ou VLOOKUP.
Syntaxe
=LAMBDA(name1, [name2, ...], formula_expression)
name1, name2, ...: Les noms des entrées (paramètres), que vous choisissez.formula_expression: Le calcul, écrit à l'aide de ces noms. Ce doit être le dernier argument.
Une LAMBDA seule ne fait rien tant qu'elle n'est pas appelée avec des valeurs. Saisir =LAMBDA(x, x * 2) renvoie une erreur. Pour la tester, appelez-la tout de suite :
=LAMBDA(x, x * 2)(5)
Renvoie 10. Le (5) placé après la LAMBDA transmet la valeur 5 à x.
Pourquoi LAMBDA compte
- Réutilisation. Écrivez une logique complexe une fois et utilisez-la à de nombreux endroits, au lieu de copier de longues formules.
- Lisibilité. Un appel comme
=PRIXNET(B2, C2)s'explique mieux qu'une expression illisible. - Traitement de tableaux.
LAMBDAest le moteur deMAP,REDUCE,SCAN,BYROW,BYCOLetMAKEARRAY, qui appliquent votre fonction à des plages. - Récursivité. Une fonction nommée peut s'appeler elle-même pour résoudre des problèmes répétitifs.
Utiliser LAMBDA avec MAP et consorts
L'usage le plus courant consiste à passer une LAMBDA à une fonction d'aide :
=MAP(A2:A10, LAMBDA(x, x * 2))
Double chaque valeur. x prend tour à tour chaque élément de A2:A10.
=MAP(A2:A10, B2:B10, LAMBDA(prix, qte, prix * qte))
Deux tableaux et une LAMBDA à deux paramètres : multiplie les lignes correspondantes.
=REDUCE(0, A2:A10, LAMBDA(total, x, total + x))
REDUCE transporte une valeur courante (total) le long de la liste. Celle-ci additionne, mais le même schéma permet de construire du texte, de trouver des maximums conditionnels, et plus encore.
=SCAN(0, A2:A10, LAMBDA(total, x, total + x))
SCAN renvoie chaque étape intermédiaire : une colonne de totaux cumulés.
=BYROW(A2:C10, LAMBDA(ligne, SUM(ligne)))
Additionne chaque ligne d'un tableau. BYROW passe chaque ligne entière à la LAMBDA.
Voir MAP pour en savoir plus.
Créer une fonction nommée
Pour réutiliser une LAMBDA n'importe où dans le fichier, enregistrez-la comme fonction nommée :
- Allez dans Données > Fonctions nommées > Ajouter une nouvelle fonction.
- Donnez-lui un nom en majuscules, comme
PRIXNET. - Ajoutez une description et un exemple si vous le souhaitez.
- Listez les espaces réservés d'arguments, comme
prix,remise. - Écrivez la définition de la formule avec ces noms, par exemple
prix * (1 - remise). - Enregistrez.
Désormais, =PRIXNET(B2, 0.1) fonctionne dans n'importe quelle cellule. Les fonctions nommées peuvent appeler d'autres fonctions nommées, et être importées dans d'autres classeurs depuis le panneau des fonctions nommées.
Notez que dans la boîte de dialogue des fonctions nommées, vous n'écrivez que le corps de la formule (prix * (1 - remise)), et non LAMBDA(...) lui-même, car la boîte de dialogue fournit l'enveloppe.
Formules pratiques
Une fonction de nettoyage réutilisable
Une fonction nommée NETTOYER_TEXTE avec l'argument texte et la définition :
PROPER(TRIM(SUBSTITUTE(texte, CHAR(160), " ")))
Puis =NETTOYER_TEXTE(A2) ou =MAP(A2:A100, LAMBDA(t, NETTOYER_TEXTE(t))).
Jointures de texte ligne par ligne
TEXTJOIN réduit toute une plage, mais avec BYROW vous pouvez réunir chaque ligne séparément :
=BYROW(A2:E10, LAMBDA(r, TEXTJOIN(", ", TRUE, r)))
Logique conditionnelle par élément
=MAP(A2:A10, LAMBDA(note, IFS(note >= 90, "A", note >= 80, "B", TRUE, "C")))
Avec LET à l'intérieur
=MAP(A2:A10, LAMBDA(x, LET(y, TRIM(x), IF(y = "", "", UPPER(y)))))
Récursivité
Une fonction nommée peut s'appeler elle-même. Un exemple classique est la factorielle : FACT(n) définie par IF(n <= 1, 1, n * FACT(n - 1)). Surveillez la condition d'arrêt pour qu'elle ne boucle pas indéfiniment.
Erreurs courantes
#ERROR!/ « Lambda doit être appelée ». LaLAMBDAa été saisie seule. Appelez-la avec(...)ou passez-la àMAP,REDUCEet consorts.- « Nombre d'arguments incorrect ». L'appel fournit un nombre de valeurs différent du nombre de paramètres de la
LAMBDA. #NAME?. Un nom de paramètre est mal orthographié dans le corps, ou vous avez utilisé le même nom qu'une référence de cellule (A1).- Fonction nommée introuvable. La fonction doit être enregistrée dans Données > Fonctions nommées avant qu'une formule puisse l'appeler, et le nom dans la formule doit correspondre.
- Dépendance circulaire. La fonction référence la cellule qui l'appelle.
- Lent sur d'énormes plages.
MAPsur des colonnes entières traite aussi les cellules vides. Utilisez des plages bornées ou filtrez d'abord les cellules vides.
LAMBDA, LET ou Apps Script ?
LETnomme des valeurs à l'intérieur d'une seule formule.LAMBDAcrée une fonction que vous pouvez réutiliser et transmettre.- Les fonctions personnalisées Apps Script peuvent faire davantage (par exemple appeler des services externes), mais demandent du code et des autorisations. Pour du calcul pur,
LAMBDAest plus simple et s'exécute plus vite.
Questions fréquentes
Faut-il LAMBDA pour MAP ? Oui, MAP prend une LAMBDA (ou une fonction nommée) comme dernier argument.
Peut-on partager des fonctions nommées ? Oui : elles font partie du classeur et peuvent être importées dans d'autres fichiers.
Combien de paramètres peut avoir une LAMBDA ? Plusieurs. Chaque paramètre est un nom placé avant l'expression finale.
Fonctions associées
LET: Nomme des valeurs à l'intérieur d'une formule.MAP: Applique une fonction à chaque élément d'un tableau.ARRAYFORMULA: Applique une formule à toute une plage.FILTER: Renvoie les lignes qui remplissent une condition.TEXTJOIN: Réunit du texte avec un séparateur.