Acest tutorial vă va arăta cum să utilizați funcția Excel COUNT în VBA
Funcția VBA COUNT este utilizată pentru a număra numărul de celule din foaia dvs. de lucru care au valori în ele. Este accesat folosind metoda WorksheetFunction în VBA.
COUNT Foaie de lucru Funcție
Obiectul WorksheetFunction poate fi utilizat pentru a apela majoritatea funcțiilor Excel disponibile în caseta de dialog Insert Function din Excel. Funcția COUNT este una dintre ele.
123 | Sub TestCountFunctinoRange ("D33") = Application.WorksheetFunction.Count (Range ("D1: D32"))Sfârșitul Sub |
Puteți avea până la 30 de argumente în funcția COUNT. Fiecare dintre argumente trebuie să se refere la o gamă de celule.
Acest exemplu de mai jos va calcula câte celule sunt populate cu valori în celulele D1 până la D9
123 | Sub TestCount ()Range ("D10") = Application.WorksheetFunction.Count (Range ("D1: D9"))Sfârșitul Sub |
Exemplul de mai jos va număra câte valori sunt într-un interval din coloana D și într-un interval din coloana F. Dacă nu tastați obiectul Application, acesta va fi presupus.
123 | Sub TestCountMultiple ()Range ("G8") = WorksheetFunction.Count (Range ("G2: G7"), Range ("H2: H7"))Sfârșitul Sub |
Atribuirea unui rezultat de numărare unei variabile
Poate doriți să utilizați rezultatul formulei dvs. în altă parte în cod, mai degrabă decât să o scrieți direct înapoi și în intervalul Excel. Dacă acesta este cazul, puteți atribui rezultatul unei variabile pentru a o utiliza ulterior în cod.
1234567 | Sub AssignCount ()Diminuează rezultatul ca întreg'Atribuiți variabilaresult = WorksheetFunction.Count (Range ("H2: H11"))'Arată rezultatulMsgBox "Numărul de celule populate cu valori este" & rezultatSfârșitul Sub |
COUNT cu un obiect Range
Puteți atribui un grup de celule obiectului Range și apoi utilizați acel obiect Range cu Foaie de lucruFuncție obiect.
123456789 | Sub TestCountRange ()Dim rng As Range'atribuiți gama de celuleSetați rng = Range ("G2: G7")'utilizați intervalul din formulăRange ("G8") = WorksheetFunction.Count (rng)'eliberați obiectul de gamăSet rng = NothingSfârșitul Sub |
COUNT obiecte cu intervale multiple
În mod similar, puteți număra câte celule sunt populate cu valori în mai multe obiecte Range.
123456789101112 | Sub TestCountMultipleRanges ()Dim rngA As RangeDim rngB ca Range'atribuiți gama de celuleSetați rngA = Range ("D2: D10")Setați rngB = Range ("E2: E10")'utilizați intervalul din formulăRange ("E11") = WorksheetFunction.Count (rngA, rngB)'eliberați obiectul de gamăSetați rngA = NimicSetați rngB = NimicSfârșitul Sub |
Folosind COUNTA
Numărul va conta numai VALORILE din celule, nu va număra celula dacă celula are text în ea. Pentru a număra celulele care sunt populate cu orice fel de date, ar trebui să folosim funcția COUNTA.
123 | Sub TestCountA ()Range ("B8) = Application.WorksheetFunction.CountA (Range (" B1: B6 "))Sfârșitul Sub |
În exemplul de mai jos, funcția COUNT ar returna un zero deoarece nu există valori în coloana B, în timp ce ar returna un 4 pentru coloana C. Funcția COUNTA însă ar număra celulele cu Text în ele și ar returna o valoare de 5 în coloana B în timp ce returnează încă o valoare de 4 în coloana C.
Folosind COUNTBLANKS
Funcția COUNTBLANKS va număra doar celulele goale din gama de celule - adică celule care nu au deloc date în ele.
123 | Sub TestCountBlank ()Range ("B8) = Application.WorksheetFunction.CountBlanks (Range (" B1: B6 "))Sfârșitul Sub |
În exemplul de mai jos, coloana B nu are celule goale, în timp ce coloana C are o celulă goală.
Utilizarea funcției COUNTIF
O altă funcție de foaie de lucru care poate fi utilizată este funcția 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")Sfârșitul Sub |
Procedura de mai sus va număra celulele cu valori în ele numai dacă criteriile sunt potrivite - mai mare de 0, mai mare de 100, mai mare de 1000 și mai mare de 10000. Trebuie să puneți criteriile între ghilimele pentru ca formula să funcționeze corect.
Dezavantaje ale WorksheetFunction
Când utilizați Foaie de lucruFuncție pentru a număra valorile dintr-un interval din foaia dvs. de lucru, se returnează o valoare statică, nu o formulă flexibilă. Aceasta înseamnă că atunci când cifrele dvs. din Excel se schimbă, valoarea care a fost returnată de Foaie de lucruFuncție nu se va schimba.
În exemplul de mai sus, procedura TestCount a numărat celulele din coloana H unde este prezentă o valoare. După cum puteți vedea în bara de formule, acest rezultat este o cifră și nu o formulă.
Dacă oricare dintre valori se schimbă, prin urmare, în Interval (H2: H12), rezultatele în H14 vor fi NU Schimbare.
În loc să utilizați WorksheetFunction.Count, puteți utiliza VBA pentru a aplica o funcție de numărare unei celule folosind Formulă sau FormulaR1C1 metode.
Folosind metoda Formula
Metoda formulă vă permite să indicați în mod specific către o gamă de celule, de exemplu: H2: H12 așa cum se arată mai jos.
123 | Sub TestCountFormulaInterval ("H14"). Formula = "= Număr (H2: H12)"Sfârșitul Sub |
Folosind metoda FormulaR1C1
Metoda FromulaR1C1 este mai flexibilă în sensul că nu vă restrânge la un interval set de celule. Exemplul de mai jos ne va oferi același răspuns ca cel de mai sus.
123 | Sub TestCountFormula ()Gama ("H14"). Formula = "= Număr (R [-9] C: R [-1] C)"Sfârșitul Sub |
Cu toate acestea, pentru a face formula mai flexibilă, am putea modifica codul astfel:
123 | Sub TestCountFormula ()ActiveCell.FormulaR1C1 = "= Număr (R [-11] C: R [-1] C)"Sfârșitul Sub |
Oriunde vă aflați în foaia dvs. de lucru, formula va număra apoi valorile din cele 12 celule aflate deasupra acesteia și va plasa răspunsul în ActiveCell. Gama din interiorul funcției COUNT trebuie menționată folosind sintaxa Rând (R) și Coloană (C).
Ambele metode vă permit să utilizați formule dinamice Excel în cadrul VBA.
Acum va exista o formulă în H14 în loc de o valoare.