Une des nouvelles fonctions récemment apparue dans Excel permet de traiter une matrice de lignes en lignes, cette fonction c’est BYROW. Dans un précédent article sur les RTT, nous l'avions utilisé mais voyons plus en détail comment elle fonctionne.
Comment utiliser BYROW pour traiter des lignes
Avec la fonction BYROW, seuls deux arguments sont nécessaires
- La matrice
C'est la plage de données concernée
- La fonction LAMBDA qui est obligatoire
C'est cette fonction qui va indiquer l'opération qui sera effectuée
Prenons cet exemple simple :

Nous avons plusieurs lignes avec des chiffres et nous souhaitons ajouter 1 à toutes les lignes en une seule manipulation.
- Nous allons donc saisir notre matrice de A1 à A7 comme premier argument.
- Puis nous utilisons LAMBDA avec un paramètre que nous nommons x. Ce dernier représente la plage de A1 à A7, pour faciliter la saisie ensuite, et le calcul est donc x+1.
Nous avons bien 1 ajouté à chaque ligne avec cette fonction :
=BYROW(A1:A7;LAMBDA(x;x+1))

Autre exemple avec une autre fonction LAMBDA
L'utilisation de la fonction LAMBDA est extrêmement puissante. Dans l'exemple précédent, nous avons construit une addition mais toutes les opérations sont possibles.
Par exemple ici, nous allons construire un test qui va nous renvoyer les jours fériés qui tombent un jour de semaine (pas le week-end)
- X, notre variable, représente notre liste des jours fériés
- Pour chaque date, nous faisons un test avec la fonction JOURSEM pour savoir si la date tombe un week-end ou non
- Enfin, ce test est intégré dans une fonction FILTRE.
=BYROW(Jferiés;LAMBDA(x;FILTRE(x;JOURSEM(x;2)<6)))

La fonction marche mais nous avons des #CALC ce qui signifie qu’une partie du tableau est vide, et renvoie une erreur.
Avec une SI.ERREUR, si nous remplaçons les erreurs par vide nous pourrions nous en sortir, mais on ne va pas faire cela, je vais vous montrer avec une autre fonction.
Utilisation de la fonction DANSCOL
Surprise !
Voici la fonction qui va nous sauver et plus appropriée aux matrices, avec deux arguments obligatoires :
- Array : la matrice souhaitée
- Ignore : de 0 à 3 en choix, pour laisser comme tel ou ignorer les espaces, les erreurs, ou tout d’un coup
- [scan_by_column] : permet de choisir le mode de scan en ligne ou en colonne en fonction des valeurs et de leur organisation
Donc tout simplement :
=DANSCOL(BYROW(Jferiés;LAMBDA(x;FILTRE(x;JOURSEM(x;2)<6)));3)

Notre matrice est bien sans erreur, il ne nous reste plus qu’à obtenir le nombre de jours, en rajoutant un NB devant
=NB(DANSCOL(BYROW(Jferiés;LAMBDA(x;FILTRE(x;JOURSEM(x;2)<6)));3))
J’espère que cela vous a plu.
EXCEL_LENTE journée ! (Rémi)