web-dev-qa-db-fra.com

COUNTIF ne peut pas compter les résultats de formule non vierges?

Je recherche un critère à utiliser dans =countif(range_of_formulas, [criterion]) qui identifiera les résultats non vides des formules . J'ai trouvé quelques-uns d'entre eux, tels que "<>", "<>"&"", "<>""", ">""", "*" et plus (par exemple, sur SO ici et ici ). Mais chaque critère ne semble fonctionner que dans certaines situations et pas dans d'autres, et ils tous échouent dans la situation suivante:

 enter image description here les colonnes A et B ont mes données d'origine. La colonne D présente les résultats des formules affichées dans la colonne C. La colonne F présente les résultats de countif en utilisant différents critères -blank résultats dans la colonne D. Aucun d'entre eux n'arrivent au bon décompte - 5.

Dans mes recherches (et dans les réponses à cette question, avant de modifier le texte), j'ai constaté de nombreuses solutions de contournement qui permettraient d'obtenir le bon décompte . Mais ce que je demande, c'est s'il existe un critère qui fonctionnerait countif, ou si countifne peut pas compter de manière fiable des résultats de formule non vierges?
(ou peut-être que quelqu'un peut dire dans quelles conditions il peut ou ne peut pas être utilisé).

7
eli-k

Comme déjà indiqué, pas directement sans aide. Alors;

La façon la plus facile d’adapter cela peut être:

=SUM(COUNTIF($D$1:$D$8,{">0",""}))

Ou

=SUM(COUNTIFS($D$1:$D$8,{">0",""}))

Qui va ajouter en conséquence et vous donner votre résultat. Notez la différence entre l’utilisation de ce COUNTIFS par rapport au vôtre et l’emplacement du {}.

Exert from: https://exceljet.net/formula/countifs-with-multiple-criteria-and-or-logic

Pour compter en fonction de plusieurs critères en utilisant la logique OR, vous pouvez utiliser la fonction COUNTIFS avec une constante de tableau . Par défaut, la fonction COUNTIFS applique la logique AND. Lorsque vous fournissez plusieurs conditions, toutes les conditions doivent correspondre pour générer un décompte .. Une solution consiste à fournir plusieurs critères dans une constante de tableau ...

4
ReturnVoid

Non, ce n'est pas possible. COUNTIF analyse la condition en utilisant une interprétation différente de celle utilisée dans les formules Excel normales.

Entre guillemets doubles, l’opérateur de comparaison au début peut être analysé: =,>,> =, <=, <, <>

Après cela, tout est soit un nombre, soit une chaîne. Tout ce qui ne peut pas être analysé sous forme de nombre le sera sous forme de chaîne. La comparaison est ensuite effectuée selon qu’il s’agit d’un nombre ou d’une chaîne.

Les comparaisons de nombres ignorent les chaînes et les comparaisons de chaînes ignorent les nombres.

"> 3" comptera tous les nombres supérieurs à 3. Il ignorera toutes les chaînes.

"> c" comptera toutes les chaînes supérieures à c (c'est-à-dire tout ce qui commence par c suivi d'un autre caractère ou tout ce qui commence par un code de caractère supérieur). Il ignore tous les chiffres.

"> 3 *" comptera toutes les chaînes plus grandes que le caractère 3.

Lorsque vous essayez de faire ">" "", le "" est utilisé pour indiquer le caractère "(car il se trouve entre guillemets dans une formule), la comparaison que vous effectuez ici est la suivante: Tout ce qui est supérieur au caractère". Tirez vers le haut un graphique Unicode et vous verrez que seulement! est inférieur à ". Donc si vous mettez! suivi de quoi que ce soit ou" seul si vos données, vous obtiendrez un compte en moins.

De même, ">" "" "" se compare à la chaîne composée de deux guillemets plutôt qu'à une chaîne nulle.

Il n'est pas possible de passer une chaîne null dans la fonction COUNTIF.

Vous aurez besoin d'une autre solution, soit:

  1. Modifiez les instructions IF antérieures pour renvoyer toute valeur autre qu'une chaîne null pouvant être testée dans l'instruction COUNTIF. Vous pouvez même utiliser CHAR(1) pour afficher un caractère non imprimable qui semble vide mais qui peut toujours être exclu dans un COUNTIF: =COUNTIF(D1:D8,"<>"&CHAR(1))

  2. Utilisez plusieurs options COUNTIF qui comptent le nombre de chaînes et le nombre de nombres: =COUNTIF(D1:D8,"?*")+COUNTIF(D1:D8,">0") (> 0 est utilisé en supposant qu'il n'y a que des nombres positifs, sinon vous devrez également ajouter le nombre de nombres <= 0)

  3. Utiliser d'autres fonctions comme suggéré par d'autres utilisateurs

4
Michael

Cela dépend de la façon dont vous écrivez votre formule.

Si vous modifiez votre formule If () comme ci-dessous et utilisez le Countif comme indiqué, la réponse sera bonne.

=IF(AND(B1=1,ISBLANK(A1)=FALSE),A1,"|^|")

=COUNTIF(C1:C8,"<>|^|")

Ou

Si vous ne pouvez pas modifier la formule If (), vous devez remplacer Countif () par Sumproduct () pour obtenir les bons résultats.

=IF(AND(B1=1,ISBLANK(A1)=FALSE),A1,"")

=SUMPRODUCT(--(TRIM($C$1:$C$8)<>""))
1
Sixthsense

Exemple COUNTIFS,

=COUNTIFS(A1:A8, "<>", B1:B8, 1)

Un autre exemple de SOMMAIRE,

=sumproduct(sign(len(d1:d10)))
1
user4039065

Cela devrait fonctionner:

=(COUNTA(range) - COUNTBLANK(range))

COUNTA - compte toutes les cellules avec le contenu

COUNTBLANK - compte toutes les cellules évaluées comme vierges

Mais méfiez-vous des cellules sans contenu, elles augmenteront COUNTBLANK mais pas COUNTA, ce qui réduira le calcul.

1
Eleshar