Fonction Google Sheets : MAP
La fonction MAP applique une fonction LAMBDA à chaque valeur du tableau entré.
Utilisation :
=MAP(tableau; LAMBDA)
ou
=MAP(tableau1; tableau2; ...; LAMBDA)
Exemple d'utilisation
L'objectif ici sera de diviser les données en 3 colonnes :
Si vous n'êtes pas sûr, vous pouvez commencer par écrire la formule (sans MAP et LAMBDA) pour une seule donnée et vous assurer qu'elle fonctionne correctement.
Dans ce cas, c'est la fonction SPLIT qui sera utilisée pour diviser les données (dont les 3 parties sont séparées par des ";") :
=SPLIT(A2;";")
La fonction SPLIT retourne bien les données divisées.
Entrez maintenant la fonction MAP suivi du tableau qui contient les données à traiter :
=MAP(A2:A21
Entrez ensuite la fonction LAMBDA et choisissez un nom de variable (par exemple "donnees") :
=MAP(A2:A21;LAMBDA(donnees
Et pour terminer, ajoutez votre fonction SPLIT et remplacez A2 par la variable "donnees" :
=MAP(A2:A21;LAMBDA(donnees;SPLIT(donnees;";")))
La fonction MAP va alors parcourir le tableau entré (A2:A21) et appliquer la formule de division à chaque valeur du tableau :
Bien sûr, vous auriez aussi pu recopier la première fonction SPLIT vers le bas pour les autres cellules si c'était le résultat final que vous souhaitiez obtenir, et cela aurait été plus simple.
Mais pour aller plus loin, cela vous aurait limité car la fonction MAP retourne un tableau (comme bien d'autres fonctions de Google Sheets) et ce tableau peut être utilisé avec d'autres fonctions.
Pour mieux comprendre, imaginez que vous souhaitez maintenant trier par ordre alphabétique les données générées, entrez simplement la formule avec MAP dans une fonction SORT :
=SORT(MAP(A2:A21;LAMBDA(donnees;SPLIT(donnees;";"))))
Vous pourriez même aller encore plus loin et utiliser la fonction QUERY pour obtenir les données pour les entreprises qui se terminent par "LLP" :
=QUERY(SORT(MAP(A2:A21;LAMBDA(donnees;SPLIT(donnees;";"))));"SELECT * WHERE Col3 LIKE '%LLP'")
Et juste pour l'exemple, sachez que vous pouvez appliquer une nouvelle fois la fonction MAP si nécessaire ... Dans ce cas, maintenant que qu'il ne reste que les entreprises avec "LLP", retirons l'information "LLP" en appliquant une nouvelle fonction MAP.
Le tableau à entrer dans la fonction MAP sera celui retourné par la fonction QUERY, suivi d'une nouvelle fonction LAMBDA qui va retirer " LLP" aux données à l'aide de SUBSTITUE :
=MAP(QUERY(SORT(MAP(A2:A21;LAMBDA(donnees;SPLIT(donnees;";"))));"SELECT * WHERE Col3 LIKE '%LLP'");LAMBDA(texte;SUBSTITUE(texte;" LLP";"")))