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 de données: c'est tout simplement la plage de données à analyser
- L'opérateur: Vous pouvez soit sélectionner un opérateur dans la liste des fonction ou créer votre propre opérateur avec la fonction LAMBDA
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 la fonction SI.ERREUR, si nous remplaçons les erreurs par vide nous pourrions nous en sortir. Mais nous allons voir une autre solution.
Utilisation de la fonction DANSCOL
La fonction DANSCOL va nous permettre d'ignorer les erreurs retournées par la précédente matrice. Elle se compose de 2 arguments obligatoire.
- 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)