Количество слов в Excel VBA
Ниже мы рассмотрим программу в Excel VBA, которая подсчитывает количество слов в выбранном диапазоне. Один или более пространства предполагаются отдельные слова.
Ситуация:
-
Во-первых, мы объявляем два объекта Range и три переменные. Мы называем объекты Диапазон ГСЧ и клетки. Одна переменная Integer мы называем cellWords, одна переменная Integer мы называем totalWords, и одна переменная строка, которую мы называем содержание.
Dim rng As Range, cell As Range Dim cellWords, totalWords As Integer, content As String
-
Мы инициализируем объект ГСЧ Range с выбранным диапазоном и две переменные типа Integer со значением 0.
Set rng = Selection cellWords = 0 totalWords = 0
-
Мы хотим, чтобы проверить каждую ячейку в случайно выбранном диапазоне (этот диапазон может быть любого размера). В Excel VBA, вы можете использовать для каждого следующего цикла для этого. Добавьте следующие строки кода:
For Each cell In rng Next cell
Примечание: RNG и клетки случайным образом выбраны здесь, вы можете использовать любые имена.
Не забывайте ссылаться на эти имена в остальной части кода.
-
Далее, мы определяем для каждой ячейки в этом диапазоне, сколько слов он содержит. Для того, чтобы игнорировать ячейку, содержащую формулу, добавьте следующую строку кода между For Each и Next (только если cell.HasFormula ложно мы продолжаем).
If Not cell.HasFormula Then End If
-
Во-первых, мы записываем содержимое ячейки с переменной содержанием.
Далее мы удаляем пробелы в начале и в конце (если таковые имеются). В Excel VBA, вы можете использовать функции подрезки для этого. Например, «Excel VBA» будет преобразован в «Excel VBA». Добавьте следующие строки кода в вашем заявлении If.
content = cell.Value content = Trim(content)
Примечание: триммер функция в Excel VBA не удаляет лишние пробелы между словами, но это нормально в этом примере.
-
На этом этапе клетка еще может быть пустой. Если ячейка пуста, то присвоить значение 0 для переменной cellWords. Если нет, то она содержит по крайней мере одно слово, и мы присваиваем значение 1 к переменной cellWords. Добавьте следующие строки кода в вашем заявлении If.
If content = "" Then cellWords = 0 Else cellWords = 1 End If
Ячейка может содержать более одного слова, конечно. Это именно то, что мы хотим, чтобы выяснить, в настоящее время. В качестве примера мы возьмем: «Excel VBA». Если ячейка содержит, по меньшей мере, одно место на данном этапе, она содержит, по крайней мере, еще одно слово. Вы можете использовать функцию Instr в Excel VBA искать пространства.
Instr (содержание «,«) находит позицию первого места содержания.
-
Мы будем использовать в Do While Loop структуры. Код помещается между этими словами (на шаге 8, 9 и 10) будут повторяться до тех пор, как часть после Do While верно. Мы хотим повторить эти шаги, пока Instr (содержание, ««)> 0 верно (если содержание содержит пробел и, таким образом, больше слов). Добавьте Do While Loop в своем заявлении If.
Do While InStr(content, " ") > 0 Loop
-
Далее мы берем часть исходного содержания в позиции первого пробела. Мы используем функцию Mid для этого.
content = Mid(content, InStr(content, " "))
Например: Mid ( «Excel VBA», InStr ( «Excel VBA», » «)) даст» VBA».
-
Мы снова обрезать строку.
content = Trim(content)
Результат: «VBA»
-
Мы приращения cellWords на 1.
cellWords = cellWords + 1
Это Do While Loop будет повторяться до тех пор, как содержание содержит пробел и, таким образом, больше слов. В нашем примере, мы выходим из Do While Loop, поскольку «VBA» не содержит пространство больше! Результат: эта ячейка содержит 2 слова.
-
После проверки на одну ячейку, мы добавим cellWords к переменной totalWords. Эта строка кода должна располагаться снаружи Do While Loop, но в If заявлении.
totalWords = totalWords + cellWords
Весь процесс начинается снова для следующей ячейки, пока все клетки не были проверены.
-
И, наконец, мы выводим значение totalWords с помощью MsgBox. Этот код строка должна быть размещена снаружи Для каждого следующего цикла.
MsgBox totalWords & " words found in the selected range."
-
Тест программы.
Результат: