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: как проверить, содержит ли строка другую строку