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