СЧЕТЧИК VBA

Из этого туториала Вы узнаете, как использовать функцию Excel COUNT в VBA.

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

COUNT рабочий лист

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

123 Sub TestCountFunctinoДиапазон ("D33") = Application.WorksheetFunction.Count (Диапазон ("D1: D32"))Конец подписки

У вас может быть до 30 аргументов в функции COUNT. Каждый из аргументов должен относиться к диапазону ячеек.

В этом примере ниже будет подсчитано, сколько ячеек заполнено значениями в ячейках с D1 по D9.

123 Sub TestCount ()Диапазон ("D10") = Application.WorksheetFunction.Count (Диапазон ("D1: D9"))Конец подписки

В приведенном ниже примере будет подсчитано, сколько значений находится в диапазоне в столбце D и в диапазоне в столбце F. Если вы не введете объект Application, он будет принят.

123 Sub TestCountMultiple ()Диапазон ("G8") = WorksheetFunction.Count (Диапазон ("G2: G7"), Диапазон ("H2: H7"))Конец подписки

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

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

1234567 Sub AssignCount ()Уменьшить результат как целое число'Назначьте переменнуюрезультат = WorksheetFunction.Count (Range ("H2: H11"))'Показать результатMsgBox «Число ячеек, заполненных значениями» & resultКонец подписки

COUNT с объектом диапазона

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

123456789 Sub TestCountRange ()Dim rng As Range'назначить диапазон ячеекУстановить rng = Диапазон ("G2: G7")'используйте диапазон в формулеДиапазон ("G8") = WorksheetFunction.Count (rng)'отпустить объект диапазонаУстановить rng = ничегоКонец подписки

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

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

123456789101112 Sub TestCountMultipleRanges ()Dim rngA As ДиапазонDim rngB as Range'назначить диапазон ячеекУстановите rngA = Range ("D2: D10")Установите rngB = Range ("E2: E10")'используйте диапазон в формулеДиапазон ("E11") = WorksheetFunction.Count (rngA, rngB)'отпустить объект диапазонаУстановите rngA = NothingУстановить rngB = НичегоКонец подписки

Использование COUNTA

При подсчете будут учитываться только ЗНАЧЕНИЯ в ячейках, он не будет учитывать ячейку, если в ячейке есть текст. Для подсчета ячеек, заполненных любыми данными, нам понадобится функция COUNTA.

123 Sub TestCountA ()Диапазон ("B8) = Application.WorksheetFunction.CountA (Диапазон (" B1: B6 "))Конец подписки

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

Использование COUNTBLANKS

Функция COUNTBLANKS будет подсчитывать только пустые ячейки в диапазоне ячеек, то есть ячейки, в которых вообще нет данных.

123 Sub TestCountBlank ()Диапазон ("B8) = Application.WorksheetFunction.CountBlanks (Диапазон (" B1: B6 "))Конец подписки

В приведенном ниже примере в столбце B нет пустых ячеек, а в столбце C - одна пустая ячейка.

Использование функции СЧЁТЕСЛИ

Еще одна функция рабочего листа, которую можно использовать, - это функция СЧЁТЕСЛИ.

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")Конец подписки

Приведенная выше процедура будет подсчитывать ячейки со значениями в них, только если критерии совпадают - больше 0, больше 100, больше 1000 и больше 10000. Вы должны заключить критерии в кавычки, чтобы формула работала правильно.

Недостатки WorksheetFunction

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

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

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

Вместо использования WorksheetFunction.Count, вы можете использовать VBA для применения функции подсчета к ячейке с помощью Формула или Формула R1C1 методы.

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

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

123 Sub TestCountFormulaДиапазон ("H14"). Формула = "= Count (H2: H12)"Конец подписки

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

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

123 Sub TestCountFormula ()Диапазон ("H14"). Формула = "= Счетчик (R [-9] C: R [-1] C)"Конец подписки

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

123 Sub TestCountFormula ()ActiveCell.FormulaR1C1 = "= Счетчик (R [-11] C: R [-1] C)"Конец подписки

Где бы вы ни находились на своем листе, формула затем подсчитает значения в 12 ячейках непосредственно над ней и поместит ответ в вашу ActiveCell. На диапазон внутри функции COUNT следует ссылаться с использованием синтаксиса Row (R) и Column (C).

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

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

Вы поможете развитию сайта, поделившись страницей с друзьями

wave wave wave wave wave