Цей підручник покаже вам, як користуватися функціями Excel COUNTIF та COUNTIFS у VBA
VBA не має еквівалента функцій COUNTIF або COUNTIFS, які можна використовувати - користувач повинен використовувати вбудовані функції Excel у VBA за допомогою Робочий лист об'єкт.
Функція аркуша 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 ()Затемнити результат як подвійний'Призначте зміннуresult = Application.WorksheetFunction.CountIf (Діапазон ("D2: D9"), "> 5")'Покажіть результатMsgBox "Кількість клітинок зі значенням більше 5" & результатEnd Sub |
Використання COUNTIFS
Функція COUNTIFS схожа на функцію COUNTIF WorksheetFunction, але дозволяє перевіряти кілька критеріїв. У наведеному нижче прикладі формула підраховує кількість клітинок від D2 до D9, де ціна продажу більша за 6, а ціна собівартості - більше 5.
123 | Sub UsingCountIfs ()Діапазон ("D10") = Робочий листFunction.CountIfs (Діапазон ("C2: C9"), "> 6", Діапазон ("E2: E9"), "> 5")End Sub |
Використання COUNTIF з об’єктом діапазону
Ви можете призначити групу клітинок об'єкту Range, а потім використовувати цей об'єкт Range разом із Робочий лист Функція об'єкт.
123456789 | Sub TestCountIFRange ()Зменшити rngCount як діапазон'призначити діапазон клітинокВстановити rngCount = Діапазон ("D2: D9")'використовуйте діапазон у формуліДіапазон ("D10") = Функція робочого аркуша.SUMIF (rngCount, "> 5")'звільнення об'єктів діапазонуВстановити rngCount = НічогоEnd Sub |
Використання COUNTIFS на об’єктах кількох діапазонів
Аналогічно, ви можете використовувати COUNTIFS для кількох об’єктів діапазону.
123456789101112 | Sub TestCountMultipleRanges ()Dim rngCriteria1 As RangeЗменшити rngCriteria2 як діапазон'призначити діапазон клітинокВстановити rngCriteria1 = Діапазон ("D2: D9")Встановити rngCriteria2 = Діапазон ("E2: E10")'використовуйте діапазони у формуліДіапазон ("D10") = WorksheetFunction.CountIfs (rngCriteria1, "> 6", rngCriteria2, "> 5")'звільнення об'єктів діапазонуВстановити rngCriteria1 = НічогоВстановити rngCriteria2 = НічогоEnd Sub |
Формула COUNTIF
Коли ви використовуєте Робочий лист Функція.COUNTIF щоб додати суму до діапазону на вашому аркуші, повертається статичне значення, а не гнучка формула. Це означає, що коли ваші цифри в Excel змінюються, значення, яке було повернуто Робочий лист Функція не зміниться.
У наведеному вище прикладі процедура підрахувала кількість клітинок зі значеннями в діапазоні (D2: D9), де ціна продажу більша за 6, і результат був поміщений у D10. Як ви можете бачити на панелі формул, цей результат є цифрою, а не формулою.
Якщо якесь із значень змінюється в діапазоні (D2: D9), результат у D10 буде НІ зміна.
Замість того, щоб використовувати WorksheetFunction.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) та Стовпець (С).
Обидва ці методи дозволяють використовувати формули динамічного Excel у VBA.
Тепер у D10 замість значення буде формула.
Текст вашого посилання