Подсчёт количества знаков и слов в тексте с помощью кода VBA Excel. Функции для подсчёта количества слов, символов с пробелами и без пробелов.
Подсчёт количества символов и слов в тексте — не самая распространённая задача при работе с VBA Excel. Но всё-таки иногда требуется провести анализ длины заголовков и описаний товаров, технических заданий, ответов из форм, данных из CRM или выгрузок из внешних систем. С помощью VBA Excel эту задачу можно автоматизировать и выполнять за секунды даже для больших объёмов данных.
Функция Len — основа подсчёта знаков
Для определения количества символов в строке в VBA Excel используется встроенная функция Len.
Синтаксис
|
1 |
Len(string) |
Функция возвращает общее количество символов, включая:
- буквы;
- цифры;
- пробелы;
- знаки препинания;
- специальные символы, в том числе символы перевода строки.
Пример подсчёта знаков в ячейке
|
1 2 3 4 5 |
Sub CountCharacters() Dim txt As String txt = Range("A1").Value MsgBox "Количество символов: " & Len(txt) End Sub |
Функция для подсчёта знаков с пробелами
Для подсчёта символов с пробелами будем использовать функцию Len, предварительно сократив только лишние пробелы:
|
1 2 3 4 |
Function CountCharacters(ByVal txt As String) As Long txt = WorksheetFunction.Trim(txt) CountCharacters = Len(txt) End Function |
Функция для подсчёта знаков без пробелов
Для подсчёта символов без пробелов будем использовать функцию Len, предварительно удалив все пробелы:
|
1 2 3 4 |
Function CountCharsNoSpaces(ByVal txt As String) As Long txt = Replace(txt, " ", "") CountCharsNoSpaces = Len(txt) End Function |
Функция для подсчёта количества слов в VBA Excel
В VBA нет отдельной встроенной функции для подсчёта слов, поэтому используются комбинации строковых функций. Чтобы получить более точный результат, текст необходимо предварительно очистить от лишних пробелов.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Function CountWords(ByVal txt As String) As Long Dim arr() As String ' Сокращаем лишние пробелы txt = WorksheetFunction.Trim(txt) ' Проверяем текст на отсутствие знаков и, если они есть, ' определяем количество слов с помощью функции Split If txt = "" Then CountWords = 0 Else arr = Split(txt, " ") CountWords = UBound(arr) + 1 End If End Function |
Пример подсчета количества знаков и слов
Пример подсчета количества знаков с пробелами, знаков без пробелов и слов в тексте, размещенном в ячейке «A1»:
|
1 2 3 4 5 |
Sub Test() Debug.Print "Количество знаков с пробелами: " & CountCharacters([a1]) Debug.Print "Количество знаков без пробелов: " & CountCharsNoSpaces([a1]) Debug.Print "Количество слов: " & CountWords([a1]) End Sub |
Подсчёт слов в диапазоне ячеек
Часто требуется посчитать количество слов сразу во всём столбце или выбранном диапазоне. Пример с подсчётом слов в выбранном диапазоне ячеек:
|
1 2 3 4 5 6 7 8 9 10 |
Sub CountWordsInRange() Dim cell As Range Dim totalWords As Long For Each cell In Selection totalWords = totalWords + CountWords(cell.value) Next cell Debug.Print "Всего слов в выбранном диапазоне: " & totalWords End Sub |
VBA Excel предоставляет все необходимые инструменты для подсчёта количества знаков и слов в тексте.