VBA COUNTIF och COUNTIFS funktioner

Denna handledning visar dig hur du använder Excel COUNTIF och COUNTIFS -funktionerna i VBA

VBA har inte motsvarande COUNTIF- eller COUNTIFS -funktioner som du kan använda - en användare måste använda de inbyggda Excel -funktionerna i VBA med hjälp av WorkSheetFunction objekt.

COUNTIF -arbetsbladFunktion

Objektet WorksheetFunction kan användas för att anropa de flesta Excel -funktioner som är tillgängliga i dialogrutan Infoga funktion i Excel. COUNTIF -funktionen är en av dem.

123 Sub TestCountIf ()Range ("D10") = Application.WorksheetFunction.CountIf (Range ("D2: D9"), "> 5")Avsluta Sub

Proceduren ovan räknar bara cellerna i intervall (D2: D9) om de har ett värde på 5 eller högre. Observera att eftersom du använder ett tecken med större än måste kriterierna större än 5 ligga inom parentes.

Tilldela ett COUNTIF -resultat till en variabel

Du kanske vill använda resultatet av din formel någon annanstans i koden istället för att skriva den direkt tillbaka till och Excel Range. Om så är fallet kan du tilldela resultatet till en variabel som ska användas senare i din kod.

1234567 Sub AssignSumIfVariable ()Dim resultat som dubbel'Tilldela variabelnresult = Application.WorksheetFunction.CountIf (Range ("D2: D9"), "> 5")'Visa resultatetMsgBox "Antalet celler med ett värde större än 5 är" & resultatAvsluta Sub

Använda COUNTIFS

COUNTIFS -funktionen liknar COUNTIF WorksheetFunction men den låter dig söka efter mer än ett kriterium. I exemplet nedan kommer formeln att räkna upp antalet celler i D2 till D9 där försäljningspriset är större än 6 OCH kostnaden är högre än 5.

123 Sub UsingCountIfs ()Range ("D10") = WorksheetFunction.CountIfs (Range ("C2: C9"), "> 6", Range ("E2: E9"), "> 5")Avsluta Sub

Använda COUNTIF med ett intervallobjekt

Du kan tilldela en grupp celler till Range -objektet och sedan använda det Range -objektet med ArbetsbladFunktion objekt.

123456789 Sub TestCountIFRange ()Dim rngCount som intervall'tilldela cellintervalletStäll in rngCount = Range ("D2: D9")'använd intervallet i formelnOmråde ("D10") = WorksheetFunction.SUMIF (rngCount, "> 5")'släpp räckviddsobjektenAnge rngCount = IngentingAvsluta Sub

Använda COUNTIFS på objekt med flera intervall

På samma sätt kan du använda COUNTIFS på flera intervallobjekt.

123456789101112 Sub TestCountMultipleRanges ()Dim rngCriteria1 As RangeDim rngCriteria2 som intervall'tilldela cellintervalletAnge rngCriteria1 = Område ("D2: D9")Ange rngCriteria2 = Område ("E2: E10")'använd intervallet i formelnRange ("D10") = WorksheetFunction.CountIfs (rngCriteria1, "> 6", rngCriteria2, "> 5")'släpp räckviddsobjektenSet rngCriteria1 = IngentingSet rngCriteria2 = IngentingAvsluta Sub

COUNTIF Formel

När du använder WorksheetFunction.COUNTIF för att lägga till en summa i ett intervall i kalkylbladet returneras ett statiskt värde, inte en flexibel formel. Det betyder att när dina siffror i Excel ändras, värdet som har returnerats av ArbetsbladFunktion kommer inte att förändras.

I exemplet ovan har proceduren räknat antalet celler med värden i intervall (D2: D9) där försäljningspriset är större än 6 och resultatet sattes i D10. Som du kan se i formelfältet är detta resultat en siffra och inte en formel.

Om något av värdena ändras i intervall (D2: D9), kommer resultatet i D10 INTE förändra.

Istället för att använda ArbetsbladFunktion.SumIf, kan du använda VBA för att tillämpa en SUMIF -funktion på en cell med Formel eller FormelR1C1 metoder.

Formelmetod

Med formelmetoden kan du peka specifikt på ett cellintervall, t.ex.: D2: D9 som visas nedan.

123 Sub TestCountIf ()Område ("D10"). FormulaR1C1 = "= COUNTIF (D2: D9," "> 5" ")"Avsluta Sub

FormelR1C1 -metod

FormulaR1C1 -metoden är mer flexibel eftersom den inte begränsar dig till ett bestämt cellintervall. Exemplet nedan ger oss samma svar som ovan.

123 Sub TestCountIf ()Område ("D10"). FormulaR1C1 = "= RÄKTA (R [-8] C: R [-1] C," "> 5" ")"Avsluta Sub

Men för att göra formeln ännu mer flexibel kan vi ändra koden så att den ser ut så här:

123 Sub TestCountIf ()ActiveCell.FormulaR1C1 = "= COUNTIF (R [-8] C: R [-1] C," "> 5" ")"Avsluta Sub

Var du än befinner dig i ditt kalkylblad räknar formeln sedan de celler som uppfyller kriterierna direkt ovanför det och placerar svaret i din ActiveCell. Området inuti COUNTIF -funktionen måste hänvisas till med syntaxen Rad (R) och Kolumn (C).

Båda dessa metoder gör att du kan använda dynamiska Excel -formler inom VBA.

Det kommer nu att finnas en formel i D10 istället för ett värde.

Din länktext

wave wave wave wave wave