Je dois compter le nombre de cellules dans une colonne qui contiennent une valeur spécifique. J'utilise actuellement le code suivant:
iVal = Application.WorksheetFunction.COUNTIF(Range("A:A"), "SAL")
Cependant, je dois maintenant compter combien de cellules contiennent soit
SAL
, ou PRE
Le moyen le plus rapide serait simplement de faire 2 COUNTIFs:
iVal = Application.WorksheetFunction.CountIf(Range("A:A"), "SAL") + Application.WorksheetFunction.CountIf(Range("A:A"), "PRE")
Vous pouvez utiliser l'équivalent VBA
d'une formule COUNTIF standard (qui peut prendre plus d'un argument). Cela peut être étendu si nécessaire
Formule standard =SUM(COUNTIF(A:A, {"SAL","PRE"}))
Equivalent VBA MsgBox Evaluate("Sum(COUNTIF(A:A,{""PRE"",""SAL""}))")
Pourquoi n'utilisez-vous pas la fonction CountIfs
?
Exemple:
Application.CountIfs(CR1_range, V_1, CR2_range, V_2, CR3_range, V_3, CR4_range, V_4)
Où CR1_range est évidemment votre plage et V_1 votre variable
Edit: Oups! Je viens de voir que cela doit être une instruction OR, ma réponse ne fonctionnerait que pour une instruction AND (n'a pas supprimé pour référence si personne n'est intéressé)
Suivre a bien fonctionné 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)
Cette page Web aide à propos des plages nommées dans Excel.