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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *