Formule Excel: compter les dates par jour de la semaine -

Table des matières

Formule générique

=SUMPRODUCT(--(WEEKDAY(dates)=day_num))

Sommaire

Pour compter les dates par jour de la semaine (c'est-à-dire compter les lundis, mardis, mercredis, etc.), vous pouvez utiliser la fonction SOMMEPROD avec la fonction JOUR DE SEMAINE. Dans l'exemple illustré, la formule en F4 est:

=SUMPRODUCT(--(WEEKDAY(dates,2)=E4))

Remarque: "dates" est la plage nommée B4: B15.

Explication

Vous vous demandez peut-être pourquoi nous n'utilisons pas COUNTIF ou COUNTIF? Ces fonctions semblent être la solution évidente. Cependant, sans ajouter une colonne d'assistance qui contient une valeur de jour de semaine, il n'existe aucun moyen de créer un critère pour que COUNTIF compte les jours de la semaine dans une plage de dates.

Au lieu de cela, nous utilisons la fonction polyvalente SUMPRODUCT, qui gère les tableaux avec élégance sans avoir besoin d'utiliser Ctrl + Maj + Entrée.

Nous utilisons SUMPRODUCT avec un seul argument, qui consiste en cette expression:

--(WEEKDAY(dates,2)=E4)

Travaillant de l'intérieur vers l'extérieur, la fonction WEEKDAY est configurée avec l'argument facultatif 2, ce qui l'amène à renvoyer les numéros 1 à 7 pour les jours du lundi au dimanche, respectivement. Cela facilite la liste des jours dans l'ordre avec les nombres de la colonne E dans l'ordre.

WEEKDAY évalue ensuite chaque date dans la plage nommée «dates» et renvoie un nombre. Le résultat est un tableau comme celui-ci:

(1;3;7;1;5;2;7;1;7;5;4;7)

Les nombres renvoyés par WEEKDAY sont ensuite comparés à la valeur dans E4, qui est 1:

(1;3;7;1;5;2;7;1;7;5;4;7)=1

Le résultat est un tableau de valeurs TRUE / FALSE.

(TRUE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;FALSE)

SUMPRODUCT ne fonctionne qu'avec des nombres (pas du texte ou des booléens), nous utilisons donc le double négatif pour contraindre les valeurs TRUE / FALSE à un et à des zéros:

(1;0;0;1;0;0;0;1;0;0;0;0)

Avec un seul tableau à traiter, SUMPRODUCT additionne les éléments et renvoie le résultat, 3.

Gérer les dates vides

Si vous avez des cellules vides dans la liste des dates, vous obtiendrez des résultats incorrects, car la fonction WEEKDAY renverra un résultat même en l'absence de date. Pour gérer les cellules vides, vous pouvez ajuster la formule comme suit:

=SUMPRODUCT((WEEKDAY(dates,2)=E4)*(dates""))

La multiplication par l'expression (dates "") est une façon d'annuler les cellules vides.

Articles intéressants...