Fonction LAMBDA dans Google Sheets : un exemple concret d'utilisation
Table des matières
Il y a quelques semaines, j'ai été confronté à un problème dans le développement de Gadgeto.
Mon besoin : afficher automatiquement (sans utiliser la poignée de recopie) le nombre d'occurrences d'une valeur figurant dans chaque ligne d'une plage de données.
Pour que ce soit plus clair, voici le jeu de données :
Ce que je cherchais à obtenir, c'est : le nombre total de redirections 301 (ou 302) pour chaque URL.
Mon 1er réflexe a été de me tourner vers la fonction ARRAYFORMULA
.
Sauf que pour "étendre" des calculs horizontaux, ça ne fonctionne pas.
Enfin, si, c'est possible, mais c'est vraiment tricky.
Et puis, je me suis souvenu que Google avait ajouté cet été de nouvelles fonctions hyper pratiques : les fonctions d'assistance LAMBDA.
Alors déjà, c'est quoi une fonction LAMBDA ?
Une fonction LAMBDA, c'est une fonction personnalisée qui prend en paramètres :
- une valeur (ou plusieurs) appelée "name"
- une formule qu'on applique à cette valeur, appelée "formula_expression"
Exemple : LAMBDA(number; number*2)(10)
.
Ici, le 1er argument est number
: c'est le "name", autrement dit la valeur à transmettre à la fonction.
Le 2ème argument est number*2
: c'est la fonction permettant de multiplier ma valeur par 2.
Et j'appelle la fonction LAMBDA directement sur ma valeur, ici 10.
Maintenant, parlons des fonctions d'assistance LAMBDA.
Ce sont des fonctions qui prennent en paramètres :
- un tableau de données
- une fonction LAMBDA
Il en existe 6 à l'heure actuelle :
MAP
REDUCE
BYCOL
BYROW
SCAN
MAKEARRAY
Celle dont je vais te parler aujourd'hui est BYROW
.
Comme son nom l'indique, elle permet d'exécuter une fonction LAMBDA sur chaque ligne d'un tableau de données.
Pile poil ce qu'il me faut.
Du coup, voici comment je m'en suis servi :
=BYROW(B9:K;LAMBDA(row;COUNTIFS(row;">300";row;"<400")))
Traduction : je souhaite compter le nombre de valeurs > 300 et < 400 dans chaque ligne de ma plage de données B9:K
.
Le souci, c'est que la fonction s'applique même aux lignes "vides".
Il a donc fallu que j'ajoute une condition pour n'exécuter BYROW
que sur les lignes contenant au moins une valeur.
Ce qui donne :
=ARRAYFORMULA(IF(B9:B<>"";BYROW(B9:K;LAMBDA(row;COUNTIFS(row;">300";row;"<400")));""))
Et voilà !
J'espère que cette petite démo t'aura permis d'en savoir plus sur les possibilités offertes par les nouvelles fonctions Google Sheets.
- Partager sur Twitter
- Partager sur Facebook
- Partager sur LinkedIn
- Partager sur Pinterest
- Partager par E-mail
- Copier le lien
Un Template Google Sheets Offert ! 🎁
Rejoins ma newsletter et reçois une astuce SEO chaque mercredi ! En cadeau, je t'offre un template Google Sheets avec 50 fonctions de scraping prêtes à l'emploi.