Utiliser la fonction SCAN dans Google Sheets

La fonction SCAN est l’une des fonctions auxiliaires LAMBDA dans Google Sheets qui renvoie un résultat sous forme de tableau en appliquant une formule personnalisée LAMBDA. Elle analyse un tableau ou une plage en appliquant une formule LAMBDA à chaque valeur en se déplaçant ligne par ligne. Elle produit un tableau contenant chaque valeur intermédiaire.

Mais pouvez-vous donner un exemple de fonctionnement de cette nouvelle fonction dans des scénarios réels de Google Sheets ?

Avec l’aide de la fonction SCAN, nous pouvons facilement obtenir le total cumulé d’un tableau de valeurs dans Google Sheets. Le meilleur avantage est que nous pouvons réinitialiser le total cumulé lorsqu’il atteint un certain seuil ou une valeur spécifique dans la plage ou le tableau analysé, par exemple, à chaque cellule vide. Nous pouvons également réinitialiser les totaux cumulés en fonction des changements de mois, d’année ou de catégorie en nous basant sur une colonne d’aide. Nous aborderons cette partie dans des tutoriels ultérieurs.

Cela peut donner l’impression erronée que la fonction SCAN est uniquement destinée à la somme cumulative. Ce n’est pas le cas.

Syntaxe de la fonction SCAN dans Google Sheets

Syntaxe : SCAN(valeur_initiale, tableau_ou_plage, LAMBDA)

Arguments :

  • valeur_initiale – La valeur de départ de l’accumulateur.
  • tableau_ou_plage – Un tableau ou une plage à analyser.
  • LAMBDA – Une formule LAMBDA qui prend deux arguments nommés pour analyser le tableau_ou_plage.

Syntaxe LAMBDA : =LAMBDA([nom, ...], expression_formule)(appel_de_fonction, ...)

Remarque : L’appel_de_fonction n’est requis que dans l’utilisation autonome de LAMBDA. Veuillez consulter mon guide des fonctions Google Sheets pour apprendre cette fonction.

Ici, pour la fonction SCAN, nous pouvons lire la syntaxe comme LAMBDA(nom1, nom2, expression_formule).

nom1 est la valeur actuelle de l’accumulateur et nom2 est la valeur actuelle du tableau_ou_plage.

Comment utiliser la fonction SCAN dans Google Sheets

Contrairement aux LHFs BYROW et BYCOL, nous devons directement coder une formule SCAN, et non une formule LAMBDA autonome, pour comprendre son utilisation.

J’ai inclus ci-dessous quatre exemples faciles à suivre pour vous aider à maîtriser la fonction SCAN dans Google Sheets.

Exemples de formules SCAN basiques

Avec du texte

1. Formule B1 (Joindre des caractères) :

=SCAN("✻", A1:A3, LAMBDA(a,v,(a&v)))

Où :

  • valeur_initiale – « ✻ »
  • tableau_ou_plage – A1:A3
  • LAMBDA – lambda(a,v,(a&v)) où a est la valeur actuelle de l’accumulateur et v est la valeur actuelle dans A1:A3.

L’accumulateur a est mis à jour à chaque étape avec la valeur intermédiaire obtenue lors de la dernière étape/précédente.

2. Formule C6 (Joindre des caractères) :

J’assume que la deuxième formule SCAN suivante dans la cellule C6 est explicite.

=SCAN("✻", A6:B7, LAMBDA(a,v,(a&v)))

Ci-dessous, vous pouvez trouver l’utilisation de la fonction SCAN avec des nombres dans un tableau dans Google Sheets.

Avec des nombres

3. Formule B11 (Total cumulé) :

=SCAN(0, A11:A14, LAMBDA(a,v,(a+v)))

Où :

  • valeur_initiale – 0
  • tableau_ou_plage – A11:A14
  • LAMBDA – lambda(a,v,(a+v)) où a est la valeur actuelle de l’accumulateur et v est la valeur actuelle dans A11:A14.

Comme précédemment, l’accumulateur a est mis à jour à chaque étape avec la valeur intermédiaire obtenue lors de la dernière étape/précédente.

4. Formule B18 (Total cumulé) :

=SCAN(100, A18:A21, LAMBDA(a,v,(a+v)))

Dans cette formule SCAN, j’ai défini valeur_initiale à 100. C’est la seule différence par rapport à la formule B11 ici.

Exemples avancés de la fonction SCAN dans Google Sheets

Vous trouverez ci-dessous trois utilisations astucieuses de la fonction SCAN dans Google Sheets.

1. Réinitialiser le total cumulé lorsqu’un certain seuil est atteint

Nous avons déjà vu comment utiliser la fonction SCAN pour un total cumulé dans Google Sheets. Veuillez faire défiler vers le haut et voir l’exemple n°3.

Pour le réinitialiser lorsqu’un certain seuil est atteint, disons 10, nous pouvons utiliser un test logique IF avec le nom1 (accumulateur) dans la partie expression_formule.

Au lieu de lambda(a,v,(a+v)) donné dans l’exemple précédent, utilisez lambda(a,v,(if(a>=10,v,a+v))).

=SCAN(0, B2:B16, LAMBDA(a,v,(if(a>=10,v,a+v))))

Réinitialisation du total cumulé lorsqu'un seuil est atteint - LAMBDA

Remarque : Dans l’exemple ci-dessus, le tableau_ou_plage est des données verticales, et le résultat est également vertical. S’il est horizontal, les valeurs retournées seront également alignées horizontalement.

2. Réinitialiser le total cumulé aux cellules vides

Si vous voulez que votre formule SCAN réinitialise le total cumulé à une ligne spécifique, insérez une ligne vide et utilisez la formule ci-dessous.

En modifiant légèrement la partie logique IF de la formule précédente, nous pouvons réinitialiser le résultat de la formule SCAN aux cellules vides au lieu d’atteindre le seuil.

Remplacez simplement v>=10 par v="" et voilà !

=SCAN(0, B2:B16, LAMBDA(a,v,(if(v="",v,v+a))))

Réinitialiser le total cumulé aux cellules vides en utilisant la fonction SCAN

3. Comment utiliser la fonction SCAN pour un comptage par groupe

Supposons que nous avons des noms de pays dans la plage de cellules A1:A6 dans l’ordre Royaume-Uni, États-Unis, États-Unis, Émirats arabes unis, Émirats arabes unis et Émirats arabes unis.

Nous attendons donc Royaume-Uni = 1, États-Unis = 2, Émirats arabes unis = 3, c’est-à-dire le nombre d’occurrences des noms de pays dans la plage.

Nous pouvons en fait utiliser une combinaison UNIQUE et NB.SI pour obtenir le résumé ci-dessus.

Pour cela, entrez =unique(A1:A6) dans la cellule C1 et =ArrayFormula(countif(A1:A6,F1:F3)) dans la cellule D1.

Nous pouvons utiliser la fonction SCAN dans Google Sheets pour remplacer la formule NB.SI ci-dessus.

Dans la cellule D1, insérez =ArrayFormula(SCAN(0,unique(A1:A6),LAMBDA(a,v,SUM((v=A1:A6)*1)))).

Et l’exemple ci-dessus sert simplement à vous faire comprendre le potentiel de la fonction SCAN dans Google Sheets.

Est-ce que la formule SCAN ci-dessus fonctionne avec des nombres et aussi avec des valeurs non triées ?

Et oui ! Aucun problème de ce genre n’a été constaté.

Articles en lien