Vba: як підрахувати клітинки з певним текстом
Ви можете використовувати такий базовий синтаксис, щоб підрахувати кількість комірок у діапазоні, що містить певний текст, за допомогою VBA:
SubCountCellsWithText ()
Range(" D2 ") = WorksheetFunction.CountIf(Range(" A2:A13 "), " *avs* ")
End Sub
У цьому конкретному прикладі підраховується кількість клітинок у діапазоні A2:A13 , які містять «avs», а потім призначається результат клітинці D2 .
Примітка . Зірочки ( * ) використовуються як символи підстановки у функції Countif .
Якщо натомість потрібно відобразити кількість клітинок у вікні повідомлення, можна використати такий синтаксис:
SubCountCellsWithText ()
Dim cellCount As Integer
'Calculate number of cells that contain 'avs'
cellCount = WorksheetFunction.CountIf(Range(" A2:A13 "), "* avs* ")
'Display the result
MsgBox "Cells that contain avs : " & cellCount
End Sub
У наведених нижче прикладах показано, як використовувати кожен із цих методів на практиці з таким набором даних у Excel, який містить інформацію про різних баскетболістів:
Приклад 1: підрахунок клітинок із певним текстом за допомогою VBA та відображення результатів у клітинці
Припустімо, ми хочемо підрахувати кількість клітинок, що містять «avs» у назві команди, і відобразити результати в певній клітинці.
Для цього ми можемо створити такий макрос:
SubCountCellsWithText ()
Range(" D2 ") = WorksheetFunction.CountIf(Range(" A2:A13 "), " *avs* ")
End Sub
Коли ми запускаємо цей макрос, ми отримуємо такий результат:
Зверніть увагу, що клітинка D2 містить значення 5 .
Це говорить нам про те, що в діапазоні A2:A13 є 5 клітинок, які містять «avs» у назві команди.
Приклад 2: підрахунок клітинок із певним текстом за допомогою VBA та відображення результатів у вікні повідомлень
Припустімо, замість цього ми хочемо підрахувати кількість клітинок, що містять “avs”, і відобразити результати у вікні повідомлення.
Для цього ми можемо створити такий макрос:
SubCountCellsWithText ()
Dim cellCount As Integer
'Calculate number of cells that contain 'avs'
cellCount = WorksheetFunction.CountIf(Range(" A2:A13 "), " *avs* ")
'Display the result
MsgBox "Cells that contain avs : " & cellCount
End Sub
Коли ми запускаємо цей макрос, ми отримуємо такий результат:
Вікно повідомлення повідомляє нам, що є 5 клітинок, які містять «avs» у назві команди.
Додаткові ресурси
У наступних посібниках пояснюється, як виконувати інші типові завдання у VBA:
VBA: проста формула для «Якщо клітинка містить»
VBA: як підрахувати випадки появи символів у рядку
VBA: як перевірити, чи містить рядок інший рядок