Fonctions VBA COUNTIF et COUNTIFS

Ce tutoriel va vous montrer comment utiliser les fonctions Excel COUNTIF et COUNTIFS en VBA

VBA n'a pas d'équivalent des fonctions COUNTIF ou COUNTIFS que vous pouvez utiliser - un utilisateur doit utiliser les fonctions Excel intégrées dans VBA en utilisant le Fonction Feuille de Travail objet.

Fonction de feuille de calcul COUNTIF

L'objet WorksheetFunction peut être utilisé pour appeler la plupart des fonctions Excel disponibles dans la boîte de dialogue Insérer une fonction dans Excel. La fonction COUNTIF en fait partie.

123 Sous TestCountIf()Range("D10") = Application.WorksheetFunction.CountIf(Range("D2:D9"), ">5")Fin du sous-marin

La procédure ci-dessus ne comptera les cellules de la plage (D2:D9) que si elles ont une valeur de 5 ou plus. Notez que parce que vous utilisez un signe supérieur à, les critères supérieurs à 5 doivent être entre parenthèses.

Affectation d'un résultat COUNTIF à une variable

Vous souhaiterez peut-être utiliser le résultat de votre formule ailleurs dans le code plutôt que de l'écrire directement dans la plage Excel. Si tel est le cas, vous pouvez affecter le résultat à une variable à utiliser plus tard dans votre code.

1234567 Sub AssignSumIfVariable()Dim résultat comme Double'Attribuer la variableresult = Application.WorksheetFunction.CountIf(Range("D2:D9"), ">5")'Afficher le résultatMsgBox "Le nombre de cellules avec une valeur supérieure à 5 est " & résultatFin du sous-marin

Utilisation de COUNTIFS

La fonction COUNTIFS est similaire à COUNTIF WorksheetFunction mais elle vous permet de vérifier plusieurs critères. Dans l'exemple ci-dessous, la formule comptera le nombre de cellules de D2 à D9 où le prix de vente est supérieur à 6 ET le prix de revient est supérieur à 5.

123 Sous utilisantCountIfs()Range("D10") = WorksheetFunction.CountIfs(Range("C2:C9"), ">6", Range("E2:E9"), ">5")Fin du sous-marin

Utilisation de COUNTIF avec un objet Range

Vous pouvez affecter un groupe de cellules à l'objet Range, puis utiliser cet objet Range avec le Feuille de travailFonction objet.

123456789 Sous TestCountIFRange()Dim rngCount comme plage'attribuer la plage de cellulesDéfinir rngCount = Range("D2:D9")'utiliser la plage dans la formuleRange("D10") = WorksheetFunction.SUMIF(rngCount, ">5")'libérer les objets de la plageDéfinir rngCount = RienFin du sous-marin

Utilisation de COUNTIFS sur plusieurs objets de plage

De même, vous pouvez utiliser COUNTIFS sur plusieurs objets de plage.

123456789101112 Sous TestCountMultipleRanges()Dim rngCriteria1 As RangeDim rngCriteria2 comme plage'attribuer la plage de cellulesDéfinir rngCriteria1= Range("D2:D9")Définir rngCriteria2 = Range("E2:E10")'utiliser les plages dans la formuleRange("D10") = WorksheetFunction.CountIfs(rngCriteria1, ">6", rngCriteria2, ">5")'libérer les objets de la plageDéfinir rngCriteria1 = RienDéfinir rngCriteria2 = RienFin du sous-marin

Formule COUNTIF

Lorsque vous utilisez le WorksheetFunction.COUNTIF pour ajouter une somme à une plage dans votre feuille de calcul, une valeur statique est renvoyée, pas une formule flexible. Cela signifie que lorsque vos chiffres dans Excel changent, la valeur renvoyée par le Feuille de travailFonction ne changera pas.

Dans l'exemple ci-dessus, la procédure a compté le nombre de cellules avec des valeurs dans la plage (D2:D9) où le prix de vente est supérieur à 6, et le résultat a été placé dans D10. Comme vous pouvez le voir dans la barre de formule, ce résultat est un chiffre et non une formule.

Si l'une des valeurs change dans la plage (D2:D9), le résultat dans D10 sera NE PAS monnaie.

Au lieu d'utiliser le WorksheetFunction.SumIf, vous pouvez utiliser VBA pour appliquer une fonction SUMIF à une cellule en utilisant le Formule ou FormuleR1C1 méthodes.

Méthode de formule

La méthode de formule vous permet de pointer spécifiquement vers une plage de cellules, par exemple : D2:D9 comme indiqué ci-dessous.

123 Sous TestCountIf()Plage("D10").FormuleR1C1 ="=COUNTIF(D2:D9, "">5"")"Fin du sous-marin

Méthode FormulaR1C1

La méthode FormulaR1C1 est plus flexible dans la mesure où elle ne vous limite pas à une plage définie de cellules. L'exemple ci-dessous nous donnera la même réponse que celui ci-dessus.

123 Sous TestCountIf()Plage("D10").FormuleR1C1 = "=COUNTIF(R[-8]C:R[-1]C,"">5"")"Fin du sous-marin

Cependant, pour rendre la formule encore plus flexible, nous pourrions modifier le code pour qu'il ressemble à ceci :

123 Sous TestCountIf()ActiveCell.FormulaR1C1 = "=COUNTIF(R[-8]C:R[-1]C,"">5"")"Fin du sous-marin

Où que vous soyez dans votre feuille de calcul, la formule comptera alors les cellules qui répondent aux critères directement au-dessus et placera la réponse dans votre ActiveCell. La plage à l'intérieur de la fonction COUNTIF doit être référencée à l'aide de la syntaxe de ligne (R) et de colonne (C).

Ces deux méthodes vous permettent d'utiliser des formules Excel dynamiques dans VBA.

Il y aura désormais une formule dans D10 au lieu d'une valeur.

Votre texte de lien

wave wave wave wave wave