VBA -RÄKNING

Denna handledning kommer att visa dig hur du använder Excel -räknefunktionen i VBA

Funktionen VBA COUNT används för att räkna antalet celler i ditt kalkylblad som har värden i dem. Den nås med hjälp av WorksheetFunction -metoden i VBA.

COUNT ArbetsbladFunktion

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

123 Sub TestCountFunctinoRange ("D33") = Application.WorksheetFunction.Count (Range ("D1: D32"))Avsluta Sub

Du kan ha upp till 30 argument i funktionen RÄKTA. Var och en av argumenten måste referera till ett cellområde.

Detta exempel nedan kommer att räkna hur många celler som fylls med värden i cellerna D1 till D9

123 Sub TestCount ()Range ("D10") = Application.WorksheetFunction.Count (Range ("D1: D9"))Avsluta Sub

Exemplet nedan räknar hur många värden som finns i ett område i kolumn D och i ett område i kolumn F. Om du inte skriver applikationsobjektet antas det.

123 Sub TestCountMultiple ()Range ("G8") = WorksheetFunction.Count (Range ("G2: G7"), Range ("H2: H7"))Avsluta Sub

Tilldela en räkningsresultat 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 AssignCount ()Dim resultat Som heltal'Tilldela variabelnresult = WorksheetFunction.Count (intervall ("H2: H11"))'Visa resultatetMsgBox "Antalet celler som fylls med värden är" & resultatAvsluta Sub

RÄKTA med ett intervallobjekt

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

123456789 Sub TestCountRange ()Dim rng As Range'tilldela cellintervalletStäll in rng = Range ("G2: G7")'använd intervallet i formelnRange ("G8") = WorksheetFunction.Count (rng)'släpp intervallobjektetStäll in rng = ingentingAvsluta Sub

RÄKTA flera intervallobjekt

På samma sätt kan du räkna hur många celler som fylls med värden i flera intervallobjekt.

123456789101112 Sub TestCountMultipleRanges ()Dim rngA As RangeDim rngB som intervall'tilldela cellintervalletStäll in rngA = Range ("D2: D10")Ställ in rngB = Range ("E2: E10")'använd intervallet i formelnRange ("E11") = WorksheetFunction.Count (rngA, rngB)'släpp intervallobjektetStäll in rngA = ingentingStäll in rngB = IngentingAvsluta Sub

Använda COUNTA

Räkningen räknar bara VÄRDEN i celler, den räknar inte cellen om cellen har text i den. För att räkna cellerna som fylls med någon form av data, skulle vi behöva använda COUNTA -funktionen.

123 Sub TestCountA ()Range ("B8) = Application.WorksheetFunction.CountA (Range (" B1: B6 "))Avsluta Sub

I exemplet nedan skulle funktionen RÄKTA returnera en nolla eftersom det inte finns några värden i kolumn B, medan den skulle returnera en 4 för kolumn C. RÄNTA -funktionen skulle dock räkna cellerna med text i och skulle returnera ett värde på 5 i kolumn B medan värdet 4 fortfarande visas i kolumn C.

Använda COUNTBLANKS

COUNTBLANKS -funktionen räknar bara de tomma cellerna i cellintervallet - det vill säga celler som inte har någon data alls.

123 Sub TestCountBlank ()Range ("B8) = Application.WorksheetFunction.CountBlanks (Range (" B1: B6 "))Avsluta Sub

I exemplet nedan har kolumn B inga tomma celler medan kolumn C har en tom cell.

Använda COUNTIF -funktionen

En annan kalkylbladsfunktion som kan användas är funktionen COUNTIF.

123456 Sub TestCountIf ()Range ("H14") = WorksheetFunction.CountIf (Range ("H2: H10"), "> 0")Range ("H15") = WorksheetFunction.CountIf (Range ("H2: H10"), "> 100")Range ("H16") = WorksheetFunction.CountIf (Range ("H2: H10"), "> 1000")Range ("H17") = WorksheetFunction.CountIf (Range ("H2: H10"), "> 10000")Avsluta Sub

Proceduren ovan räknar bara cellerna med värden i om kriterierna matchas - större än 0, större än 100, större än 1000 och större än 10000. Du måste sätta kriterierna inom citattecken för att formeln ska fungera korrekt.

Nackdelar med WorksheetFunction

När du använder ArbetsbladFunktion för att räkna värdena 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 TestCount räknat upp cellerna i kolumn H där ett värde finns. Som du kan se i formelfältet är detta resultat en siffra och inte en formel.

Om något av värdena därför ändras i intervallet (H2: H12), kommer resultaten i H14 INTE förändra.

Istället för att använda WorksheetFunction.Count, kan du använda VBA för att tillämpa en räkningsfunktion på en cell med Formel eller FormelR1C1 metoder.

Med hjälp av formelmetoden

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

123 Sub TestCountFormulaOmråde ("H14"). Formel = "= Antal (H2: H12)"Avsluta Sub

Använda FormulaR1C1 -metoden

Metoden FromulaR1C1 är mer flexibel eftersom den inte begränsar dig till ett angivet cellintervall. Exemplet nedan ger oss samma svar som ovan.

123 Sub TestCountFormula ()Område ("H14"). Formel = "= Count (R [-9] C: R [-1] C)"Avsluta Sub

För att göra formeln mer flexibel kan vi dock ändra koden så här:

123 Sub TestCountFormula ()ActiveCell.FormulaR1C1 = "= Antal (R [-11] C: R [-1] C)"Avsluta Sub

Var du än befinner dig i kalkylbladet kommer formeln sedan att räkna värdena i de 12 cellerna direkt ovanför det och placera svaret i din ActiveCell. Området inuti funktionen RÄKTA 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 H14 istället för ett värde.

Du kommer att bidra till utvecklingen av webbplatsen, dela sidan med dina vänner

wave wave wave wave wave