Подсчет слов в Excel VBA - макросы Easy Excel

Содержание

Ниже мы рассмотрим программу на Excel VBA тот считает количество слов в выбранном диапазоне. Предполагается, что один или несколько пробелов разделяют слова.

Ситуация:

1. Сначала мы объявляем два объекта Range и три переменные. Мы называем объекты Range rng и cell. Одну переменную типа Integer мы называем cellWords, одну переменную Integer называем totalWords и одну переменную String мы называем содержимым.

Dim rng As Range, cell as Range
Dim cellWords, totalWords As Integer, content As String

2. Мы инициализируем rng объекта Range выбранным диапазоном и двумя переменными типа Integer со значением 0.

Установить rng = Выбор
cellWords = 0
totalWords = 0

3. Мы хотим проверить каждую ячейку в случайно выбранном диапазоне (этот диапазон может быть любого размера). В Excel VBA для этого можно использовать цикл For Each Next. Добавьте следующие строки кода:

Для каждой ячейки In rng
Следующая ячейка

Примечание: здесь случайным образом выбираются rng и ячейка, вы можете использовать любые имена. Не забудьте ссылаться на эти имена в остальной части кода.

4. Затем мы определяем для каждой ячейки в этом диапазоне, сколько слов она содержит. Чтобы игнорировать ячейку, содержащую формулу, добавьте следующую строку кода между For Each и Next (только если cell.HasFormula имеет значение false, мы продолжаем).

Если не cell.HasFormula Then
Конец, если

5. Сначала мы записываем содержимое ячейки в переменную content. Далее убираем пробелы в начале и в конце (если есть). В Excel VBA для этого можно использовать функцию обрезки. Например, «excel vba» будет преобразовано в «excel vba». Добавьте следующие строки кода в оператор If.

content = cell.Value
content = Trim (содержимое)

Примечание: функция обрезки в Excel VBA не удаляет лишние пробелы между словами, но в этом примере это нормально.

6. На этом этапе ячейка все еще может быть пустой. Если ячейка пуста, мы присваиваем значение 0 переменной cellWords. Если нет, то он содержит хотя бы одно слово, и мы присваиваем значение 1 переменной cellWords. Добавьте следующие строки кода в оператор If.

Если content = "" Тогда
cellWords = 0
Еще
cellWords = 1
Конец, если

Конечно, ячейка может содержать более одного слова. Это именно то, что мы хотим узнать сейчас. В качестве примера возьмем: «excel vba». Если на этом этапе ячейка содержит хотя бы один пробел, она содержит еще хотя бы одно слово. Вы можете использовать функцию Instr в Excel VBA для поиска места. Instr (content, "") находит позицию первого пробела в содержимом.

7. Мы будем использовать структуру Do While Loop. Код, помещенный между этими словами (на шагах 8, 9 и 10), будет повторяться до тех пор, пока часть после Do While будет истинной. Мы хотим повторять эти шаги, пока Instr (content, "")> 0 истинно (пока контент содержит пробел и, следовательно, больше слов). Добавьте цикл Do While в оператор If.

Сделать пока InStr (content, "")> 0
Петля

8. Затем мы берем часть контента, начиная с позиции первого пробела. Для этого мы используем функцию Mid.

content = Mid (content, InStr (content, ""))

Например: Mid ("excel vba", InStr ("excel vba", "")) даст "vba".

9. Снова обрезаем шнурок.

content = Trim (содержимое)

Результат: "vba"

10. Увеличиваем cellWords на 1.

cellWords = cellWords + 1

Этот цикл Do While Loop будет повторяться до тех пор, пока контент содержит пробел и, следовательно, больше слов. В нашем примере мы выходим из цикла Do While Loop, поскольку "vba" больше не содержит пробелов! Результат: в этой ячейке 2 слова.

11. После проверки одной ячейки мы добавляем cellWords к переменной totalWords. Эта строка кода должна быть размещена вне цикла Do While, но в операторе If.

totalWords = totalWords + cellWords

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

12. Наконец, мы отображаем значение totalWords с помощью msgbox. Эта строка кода должна быть размещена за пределами цикла For Each Next.

MsgBox totalWords & «слова, найденные в выбранном диапазоне».

13. Протестируйте программу.

Результат:

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

wave wave wave wave wave