Функции VBA СЧЁТЕСЛИ и СЧЁТЕСЛИМН

Из этого туториала Вы узнаете, как использовать функции Excel СЧЁТЕСЛИ и СЧЁТЕСЛИ в VBA.

VBA не имеет эквивалента функций СЧЁТЕСЛИ или СЧЁТЕСЛИМН, которые вы можете использовать - пользователь должен использовать встроенные функции Excel в VBA, используя Рабочий лист объект.

СЧЕТЕСЛИ Рабочий лист

Объект WorksheetFunction можно использовать для вызова большинства функций Excel, доступных в диалоговом окне «Вставить функцию» в Excel. Функция СЧЁТЕСЛИ - одна из них.

123 Sub TestCountIf ()Range ("D10") = Application.WorksheetFunction.CountIf (Range ("D2: D9"), "> 5")Конец подписки

Приведенная выше процедура будет подсчитывать только ячейки в диапазоне (D2: D9), если они имеют значение 5 или больше. Обратите внимание: поскольку вы используете знак «больше», критерии больше 5 должны быть заключены в круглые скобки.

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

Возможно, вы захотите использовать результат своей формулы в другом месте кода, а не записывать его непосредственно обратно в Excel Range. В этом случае вы можете присвоить результат переменной, которая будет использоваться позже в вашем коде.

1234567 Sub AssignSumIfVariable ()Тусклый результат как двойной'Назначьте переменнуюresult = Application.WorksheetFunction.CountIf (Range ("D2: D9"), "> 5")'Показать результатMsgBox "Количество ячеек со значением больше 5 равно" & результатКонец подписки

Использование СЧЁТЕСЛИМН

Функция СЧЁТЕСЛИМН похожа на функцию СЧЁТЕСЛИ Worksheet, но позволяет вам проверять более одного критерия. В приведенном ниже примере формула подсчитывает количество ячеек от D2 до D9, где цена продажи больше 6, а себестоимость больше 5.

123 Sub UsingCountIfs ()Range ("D10") = WorksheetFunction.CountIfs (Range ("C2: C9"), "> 6", Range ("E2: E9"), "> 5")Конец подписки

Использование COUNTIF с объектом диапазона

Вы можете назначить группу ячеек объекту Range, а затем использовать этот объект Range с Рабочий лист объект.

123456789 Sub TestCountIFRange ()Dim rngCount as Range'назначить диапазон ячеекУстановите rngCount = Range ("D2: D9")'используйте диапазон в формулеДиапазон ("D10") = WorksheetFunction.SUMIF (rngCount, "> 5")'освободить объекты диапазонаУстановите rngCount = NothingКонец подписки

Использование COUNTIFS для объектов с несколькими диапазонами

Точно так же вы можете использовать COUNTIFS для нескольких объектов диапазона.

123456789101112 Sub TestCountMultipleRanges ()Dim rngCriteria1 As ДиапазонDim rngCriteria2 as Range'назначить диапазон ячеекУстановить rngCriteria1 = Range ("D2: D9")Установить rngCriteria2 = Range ("E2: E10")'используйте диапазоны в формулеДиапазон ("D10") = WorksheetFunction.CountIfs (rngCriteria1, "> 6", rngCriteria2, "> 5")'освободить объекты диапазонаУстановить rngCriteria1 = NothingУстановить rngCriteria2 = NothingКонец подписки

СЧЁТЕСЛИ Формула

Когда вы используете WorksheetFunction.COUNTIF чтобы добавить сумму к диапазону на листе, возвращается статическое значение, а не гибкая формула. Это означает, что при изменении ваших цифр в Excel значение, возвращаемое Рабочий лист не изменится.

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

Если любое из значений изменится в диапазоне (D2: D9), результат в D10 будет НЕТ изменение.

Вместо использования Рабочий лист Функция. Сумма Если, вы можете использовать VBA для применения функции СУММЕСЛИ к ячейке с помощью Формула или Формула R1C1 методы.

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

Метод формулы позволяет указать конкретный диапазон ячеек, например: D2: D9, как показано ниже.

123 Sub TestCountIf ()Диапазон ("D10"). FormulaR1C1 = "= СЧЁТЕСЛИ (D2: D9," "> 5" ")"Конец подписки

Метод FormulaR1C1

Метод FormulaR1C1 более гибкий, поскольку он не ограничивает вас заданным диапазоном ячеек. Пример ниже даст нам тот же ответ, что и приведенный выше.

123 Sub TestCountIf ()Диапазон ("D10"). FormulaR1C1 = "= СЧЁТЕСЛИ (R [-8] C: R [-1] C," "> 5" ")"Конец подписки

Однако, чтобы сделать формулу еще более гибкой, мы могли бы изменить код, чтобы он выглядел так:

123 Sub TestCountIf ()ActiveCell.FormulaR1C1 = "= СЧЁТЕСЛИ (R [-8] C: R [-1] C," "> 5" ")"Конец подписки

Где бы вы ни находились на своем листе, формула затем подсчитает ячейки, которые соответствуют критериям непосредственно над ней, и поместит ответ в вашу ActiveCell. На диапазон внутри функции СЧЁТЕСЛИ необходимо ссылаться с использованием синтаксиса строки (R) и столбца (C).

Оба эти метода позволяют использовать динамические формулы Excel в VBA.

Теперь вместо значения в D10 будет формула.

Текст вашей ссылки

wave wave wave wave wave