J'ai besoin de compter le nombre de cellules dans une colonne contenant une valeur spécifique. J'utilise actuellement le code suivant: p>
Cependant, j'ai maintenant besoin de compter combien de cellules contiennent p>
ival = application.worksheetfunction.conountif (plage ("A: A"), "Sal") code> p>
sal code>, ou strong> li>
pré code> li>
ul>
4 Réponses :
Le moyen le plus rapide serait simplement de faire 2 à propos:
iVal = Application.WorksheetFunction.CountIf(Range("A:A"), "SAL") + Application.WorksheetFunction.CountIf(Range("A:A"), "PRE")
+1, c'est votre meilleure approche car le comtétif ne peut accepter qu'un seul paramètre.
Cela fonctionne bien mais à long terme, je finirai avec beaucoup de variables afin d'essayer de trouver une méthode plus efficace, une excellente méthode intermédiaire cependant!
@Mattdonnan Il est en fait possible de nourrir à Countif plus d'un test, voir ci-dessus.
@Brettdj aucune idée que vous pouvez utiliser le {} pour ajouter plus de valeurs, ce n'est pas dans la documentation, vraiment bien cependant. +1
Cela ne comptera pas une cellule qui contient SAL et PRE deux fois?
Y a-t-il un moyen d'utiliser la liste de la valeur avec {arg1, arg2, ...}? Le symbole {est identifié comme un caractère invalide ....
Face à la même erreur Mario. Impossible de trouver une solution. PEXCLUTEDITEMS = SUM (Counttif (.Range (.Cells (2, Colservation), .Cells (pnumlindadastd, colame)), {"E", "e_"}))
Vous pouvez utiliser le VBA code> équivalent d'une formule de dénombrement standard (qui peut prendre plus d'un argument). Cela peut être étendu au besoin p>
= somme (Countif (A: A, {"SAL", "PRE"})) CODE> P>
MsgBox Évaluez ("Somme (Countif (A: A, {" "PRE" "," "Sal" "}))") Code> P>
+1 loin et loin la meilleure réponse jusqu'à présent! Peut-être payer pour ajouter une option VBA pour réussir une gamme de chaînes msgbox évaluer ("Somme (A: A, {" "" & Join (V, "" ") &" "") ) ") code>
@chrisneilsen thx - et une excellente suggestion sur le tableau des cordes.
Pourquoi n'utilisez-vous pas la fonction exemple: p> où cr1_range est évidemment votre plage et v_1 est votre variable < / p> EDIT: Ooops! Je viens de voir que ce doit être une déclaration ou une déclaration, ma réponse ne fonctionnerait que pour une déclaration et une déclaration (n'a pas supprimé la référence en cas de référence, personne n'est intéressé) p> p> compteur code> fonction code>
Après avoir fonctionné bien pour moi: -
Dim val1 as string, val2 as string
val1 = "value1"
val2 = "value2"
count = Application.WorksheetFunction.CountIfs(ThisWorkbook.Names("firstname").RefersToRange, val1 , ThisWorkbook.Names("secondname").RefersToRange, val2)
Pourquoi pas une simple deuxième ligne
ival2 = application.worksheetfunction.concountif (plage ("A: A"), "PRE") CODE>, puis ajoutez (ou signalez les deux variables comme total?Parce que je vais ajouter environ 20 variables et faire ceci pendant environ 30 colonnes différentes, vous pourrez donc réduire beaucoup de travail si je peux tout faire en une seule ligne!
Que diriez-vous de lire les valeurs de la colonne dans un tableau? Ensuite, vous pouvez faire boucle, ajouter des conditions et ainsi de suite?
Quelle version d'Excel utilisez-vous? Si vous utilisez 2007 et plus, il ne dispose pas d'une fonction code> compteur code>? Quoi qu'il en soit, si vous recherchez la solution la plus rapide, la solution JPS serait probablement la solution la plus rapide, vous devrez faire un test pour découvrir cependant, parfois Excel est parfois plus rapide, ce qui fait que faire des boucles dans VBA est plus rapide.
IM Utilisation de 2010, la fonction de Countif ne fonctionne que si tous les critères sont vrais, pas si chacun?
"IM en utilisant 2010, la fonction de Countif ne fonctionne que si tous les critères sont vrais, pas si chacun?" I> Oui.