VBA COUNTIF и COUNTIFS функции

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

VBA няма еквивалент на функциите COUNTIF или COUNTIFS, които можете да използвате - потребителят трябва да използва вградените функции на Excel във VBA, като използва WorkSheetFunction обект.

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

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

123 Sub TestCountIf ()Диапазон ("D10") = Application.WorksheetFunction.CountIf (Диапазон ("D2: D9"), "> 5")End Sub

Горната процедура ще брои клетките в диапазон (D2: D9) само ако те имат стойност 5 или по -голяма. Забележете, че тъй като използвате знак по -голям, критериите по -големи от 5 трябва да бъдат в скоби.

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

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

1234567 Sub AssignSumIfVariable ()Затъмнете резултата като двоен'Задайте променливатарезултат = Application.WorksheetFunction.CountIf (Обхват ("D2: D9"), "> 5")'Покажете резултатаMsgBox "Броят на клетките със стойност по -голяма от 5 е" & резултатEnd Sub

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

Функцията COUNTIFS е подобна на функцията COUNTIF WorksheetFunction, но ви позволява да проверите за повече от един критерий. В примера по -долу формулата ще преброи броя клетки в D2 до D9, където продажната цена е по -голяма от 6 И цената на себестойността е по -голяма от 5.

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

Използване на COUNTIF с Range Object

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

123456789 Sub TestCountIFRange ()Dim rngCount като Range'задайте диапазона от клеткиЗадайте rngCount = Обхват ("D2: D9")'използвайте диапазона във формулатаДиапазон ("D10") = Функция на работен лист.SUMIF (rngCount, "> 5")'освободете обектите на диапазонаЗадайте rngCount = НищоEnd Sub

Използване на COUNTIFS върху обекти с множество обхвати

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

123456789101112 Sub TestCountMultipleRanges ()Dim rngCriteria1 As RangeDim rngCriteria2 като диапазон'задайте диапазона от клеткиЗадайте rngCriteria1 = Обхват ("D2: D9")Задайте rngCriteria2 = Обхват ("E2: E10")'използвайте диапазоните във формулатаRange ("D10") = WorksheetFunction.CountIfs (rngCriteria1, "> 6", rngCriteria2, "> 5")'освободете обектите на диапазонаЗадайте rngCriteria1 = НищоЗадайте rngCriteria2 = НищоEnd Sub

COUNTIF Формула

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

В горния пример процедурата е преброила количеството клетки със стойности в диапазон (D2: D9), където продажната цена е по -голяма от 6, и резултатът е поставен в D10. Както можете да видите в лентата с формули, този резултат е цифра, а не формула.

Ако някоя от стойностите се промени в диапазон (D2: D9), резултатът в D10 ще бъде НЕ промяна.

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

Метод на формулата

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

123 Sub TestCountIf ()Обхват ("D10"). Формула R1C1 = "= COUNTIF (D2: D9," "> 5" ")"End Sub

Формула Метод R1C1

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

123 Sub TestCountIf ()Обхват ("D10"). Формула R1C1 = "= COUNTIF (R [-8] C: R [-1] C," "> 5" ")"End Sub

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

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

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

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

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

Текстът на вашата връзка

wave wave wave wave wave