БРОЙ VBA

Този урок ще ви покаже как да използвате функцията Excel COUNT във VBA

Функцията VBA COUNT се използва за преброяване на броя на клетките във вашия работен лист, които имат стойности в тях. Достъпът се осъществява чрез метода WorksheetFunction във VBA.

COUNT Работен лист Функция

Обектът WorksheetFunction може да се използва за извикване на повечето от функциите на Excel, които са налични в диалоговия прозорец Вмъкване на функция в Excel. Функцията COUNT е една от тях.

123 Sub TestCountFunctinoДиапазон ("D33") = Application.WorksheetFunction.Count (Диапазон ("D1: D32"))End Sub

Можете да имате до 30 аргумента във функцията COUNT. Всеки от аргументите трябва да се отнася до диапазон от клетки.

Този пример по -долу ще брои колко клетки са запълнени със стойности в клетки D1 ​​до D9

123 Sub TestCount ()Диапазон ("D10") = Application.WorksheetFunction.Count (Диапазон ("D1: D9"))End Sub

Примерът по -долу ще брои колко стойности са в диапазон в колона D и в диапазон в колона F. Ако не въведете обекта Application, той ще се приеме.

123 Sub TestCountMultiple ()Диапазон ("G8") = Работен лист Функция.Контрол (Обхват ("G2: G7"), Обхват ("H2: H7"))End Sub

Присвояване на резултат на променлива

Може да искате да използвате резултата от формулата си другаде в кода, вместо да го пишете директно обратно в и Excel диапазон. Ако случаят е такъв, можете да присвоите резултата на променлива, която да използвате по -късно във вашия код.

1234567 Sub AssignCount ()Затъмняване на резултата Като цяло число'Задайте променливатаresult = WorksheetFunction.Count (Диапазон ("H2: H11"))'Покажете резултатаMsgBox "Броят клетки, запълнени със стойности, е" & резултатEnd Sub

COUNT с Range Object

Можете да присвоите група клетки на обекта Range и след това да използвате този Range обект с Работен лист Функция обект.

123456789 Sub TestCountRange ()Dim rng As Range'задайте диапазона от клеткиЗадайте rng = Обхват ("G2: G7")'използвайте диапазона във формулатаДиапазон ("G8") = Функция на работен лист.Count (rng)'освободете обекта rangeЗадайте rng = НищоEnd Sub

COUNT обекти с множество обхвати

По същия начин можете да преброите колко клетки са запълнени със стойности в множество Range Objects.

123456789101112 Sub TestCountMultipleRanges ()Dim rngA As RangeDim rngB като Range'задайте диапазона от клеткиЗадайте rngA = Обхват ("D2: D10")Задайте rngB = Обхват ("E2: E10")'използвайте диапазона във формулатаДиапазон ("E11") = Функция на работен лист.Кон (rngA, rngB)'освободете обекта rangeЗадайте rngA = НищоЗадайте rngB = НищоEnd Sub

Използване на COUNTA

Преброяването ще брои само СТОЙНОСТИТЕ в клетките, няма да брои клетката, ако клетката има текст в нея. За да преброим клетките, които са попълнени с всякакъв вид данни, ще трябва да използваме функцията COUNTA.

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

В примера по -долу функцията COUNT ще върне нула, тъй като няма стойности в колона B, докато тя ще върне 4 за колона C. Функцията COUNTA обаче ще преброи клетките с текст в тях и ще върне стойност от 5 в колона B, като все още връща стойност 4 в колона C.

Използване на COUNTBLANKS

Функцията COUNTBLANKS ще брои само празните клетки в диапазона от клетки - т.е. клетки, които изобщо нямат данни.

123 Sub TestCountBlank ()Диапазон ("B8) = Application.WorksheetFunction.CountBlanks (Range (" B1: B6 "))End Sub

В примера по -долу колона B няма празни клетки, докато колона C има една празна клетка.

Използване на функцията COUNTIF

Друга функция на работен лист, която може да се използва, е функцията 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")End Sub

Горната процедура ще брои клетките със стойности в тях само ако критериите са съвпаднали - по -голямо от 0, по -голямо от 100, по -голямо от 1000 и по -голямо от 10000. Трябва да поставите критериите в кавички, за да работи формулата правилно.

Недостатъци на функцията на работния лист

Когато използвате Работен лист Функция за да преброите стойностите в диапазон във вашия работен лист, се връща статична стойност, а не гъвкава формула. Това означава, че когато вашите цифри в Excel се променят, стойността, която е била върната от Работен лист Функция няма да се промени.

В горния пример процедурата TestCount преброи клетките в колона H, където има стойност. Както можете да видите в лентата с формули, този резултат е цифра, а не формула.

Следователно, ако някоя от стойностите се промени в диапазона (H2: H12), резултатите в H14 ще бъдат НЕ промяна.

Вместо да използвате Работен лист Функция, можете да използвате VBA, за да приложите функция за броене към клетка, използвайки Формула или Формула R1C1 методи.

Използвайки метода на формулата

Методът на формулата ви позволява да посочите конкретно към диапазон от клетки, например: H2: H12, както е показано по -долу.

123 Sub TestCountFormulaОбхват ("H14"). Формула = "= Брой (H2: H12)"End Sub

Използване на метода FormulaR1C1

Методът FromulaR1C1 е по -гъвкав, тъй като не ви ограничава до определен диапазон от клетки. Примерът по -долу ще ни даде същия отговор като този по -горе.

123 Sub TestCountFormula ()Обхват ("H14"). Формула = "= Брой (R [-9] C: R [-1] C)"End Sub

За да направим формулата по -гъвкава, бихме могли да променим кода така, че да изглежда така:

123 Sub TestCountFormula ()ActiveCell.FormulaR1C1 = "= Брой (R [-11] C: R [-1] C)"End Sub

Където и да сте в работния си лист, формулата ще преброи стойностите в 12 -те клетки точно над него и ще постави отговора във вашия ActiveCell. Обхватът във функцията COUNT трябва да бъде посочен, като се използва синтаксисът на ред (R) и колона (C).

И двата метода ви позволяват да използвате формули за динамичен Excel в рамките на VBA.

Сега ще има формула в H14 вместо стойност.

Така ще помогнете за развитието на сайта, сподели с приятелите си

wave wave wave wave wave