SOMME.SI.ENS avec critère sur valeur partielle
par
, 14/10/2021 à 08h00 (1781 Affichages)
SOMME.SI.ENS utilise les jokers * et ? pour évaluer les chaines de caractères, comme toutes les fonctions XXX.SI.ENS
Salut.
SOMME.SI.ENS, et les fonctions d'ensemble en général, permettent de critériser rapidement sur les valeurs d'une colonne dans un tableau structuré. Ainsi, si je souhaite connaître l'état de stock d'un article, j'ai un critère à utiliser: =SOMME.SI.ENS(t_Inventaire[Qté];t_Inventaire[Code];E1)
Simple et efficace. Je peux bien entendu ajouter des critères avec un maximum de 127 critères, ce qui est largement suffisant.
Limitations dans l'expression des critères
Chaque critère doit être exprimé sur tout ou valeur des cellules d'une colonne, et tous les critères exprimés doivent être rencontrés sur une ligne pour qu'elle soit prise en compte par la fonction.
Pour une date par exemple, on ne peut pas travailler directement sur le mois des dates avec quelque chose comme MOIS(MaDate)=2, par exemple, et il faut alors composer la formule autrement, comme je l'explique dans ce billet.
De même, on ne peut pas utiliser dans le critère une fonction telle quepour ne reprendre que les lignes pour lesquelles MaValeur commence par 3 caractères précis. Par exemple, si je veux compter le nombre d'articles de la catégorie 118, je ne peux pas utiliser SOMME.SI.ENS comme ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part GAUCHE(MaValeur;3)
En effet, les critères doivent être exprimés par paire Plage/Valeur, or le deuxième critère n'exprime pas une plage, mais le résultat d'une fonction constitué d'une chaine de caractères. On va donc s'y prendre autrement, pour tester une partie de chaine textuelle.
Les jokers
Depuis que le système d'exploitation DOS existe, il est possible d'utiliser * et ? pour lister les fichiers d'un dossier. Si je souhaite récupérer tous les fichiers XLS, je peux utiliser Dir *.xls. Depuis 2007, je pourrais utiliser [I]Dir *.xl??[/c] pour récupérer les xlsx, xlsm, xlam... On voit donc que * remplace un nombre indéterminé de caractères et que ? remplace n'importe quel caractère à une place bien précise.
Les utilisateurs des filtres automatiques dans Excel connaissent cela puisqu'ils peuvent, là aussi, utiliser les jokers
Et bien ces jokers, on peut les utiliser avec SOMME.SI.ENS et avec toutes les fonctions d'ensemble (MOYENNE.SI.ENS, NB.SI.ENS, MAX.SI.ENS, MIN.SI.ENS)
On pourra bien sûr recomposer l'expression du critère par concaténation:
Et si le joker est un des caractères du critère?
Si je veux dénombrer les affirmations et les interrogations dans le tableau suivant, c'est ok pour les ! mais pas vraiment pour les ?
L'astuce va consister ici à échapper le caractère ? pour préciser que ce n'est pas un joker. Et ils ont fait fort, ils ont choisi le signe ~: =NB.SI.ENS(Tableau4[Item];"*~?")
Bon à savoir: Les jokers peuvent être utilisés avec RECHERCHEV, RECHERCHEH, EQUIV, RECHERCHEX et EQUIVX
.