Есть одна штука, которую я бы хотел иметь в Excel: подсчет слов в ячейке.
Если вы работаете в MS Word, в строке состояния есть встроенная опция, которая показывает, сколько слов на листе.
В Word есть опция для подсчета слов, но не в Excel. Вы можете посчитать количество ячеек, в которых есть текст, но не фактические слова в них.
В Excel в нашем распоряжении есть функции, с которыми мы можем посчитать почти все. Вы можете создать формулу, которая сможет посчитать слова в ячейке.
Четыре разных способа посчитать слова в Excel
Сегодня в этой статье вы научитесь считать слова в Excel в ячейке или диапазоне ячеек или даже во всей таблице.
Также я покажу вам, как посчитать определенное слово из диапазона ячеек. Теперь без всяких церемоний, давайте начнем.
1. Формула для подсчета слов в ячейке
Сочетание функций ДЛСТР с ПОДСТАВИТЬ
И формула будет (текст в ячейке A1):
= ДЛСТР(A1) — ДЛСТР (ПОДСТАВИТЬ (A1; » «; «»)) + 1
Когда вы ссылаетесь на ячейку, используя эту формулу, она вернет 5 в результате.
И да, у вас есть 5 слов в ячейке.
Как формула работает?
Прежде чем перейти к этой формуле, просто подумайте. В обычном предложении, если у вас восемь слов, у вас определенно будет 7 пробелов в этих словах. Правильно? Это означает, что у вас всегда будет на одно слово больше, чем пробелов.
Идея проста: если вы хотите посчитать слова, подсчитайте пробелы и добавьте единицу.
Теперь, чтобы понять эту формулу, вам нужно разделить ее на три части.
В первой части мы использовали функцию ДЛСТР (LEN) для подсчета количества символов в ячейке A1. А во второй и третьей части мы объединили ПОДСТАВИТЬ (SUBSTITUTE) с ДЛСТР (LEN), чтобы удалить пробелы из ячейки и затем подсчитать символы.
Наше уравнение выглядит так:
= 20 — 16 +1
- 20 — общее количество символов с пробелами
- 16 — символы без пробелов
Когда вы вычтете одно из другого, вы получите количество пробелов, и вам останется добавить один. В результате возвращается число 5, что является общим количеством слов в ячейке.
Когда вы используете приведенную выше формулу, она вернет 1, даже если ячейка пуста, поэтому лучше обернуть ее функцией ЕСЛИ (IF), чтобы избежать этой проблемы.
= ЕСЛИ(ЕПУСТО (A1);0; ДЛСТР(A1) — ДЛСТР(ПОДСТАВИТЬ(A1; » «; «»)) + 1)
Эта формула сначала проверяет ячейку и возвращает количество слов, только если в ячейке есть значение.
Пользовательская функция
Помимо приведенных выше формул, я напишу вам небольшой код для создания Пользовательской функции. Этот код поможет вам создать пользовательскую функцию, которая будет просто возвращать количество слов. Короче говоря, вам не нужно будет сочетать какие-либо функции.
Function MyWordCount(rng As Range) As Integer
MyWordCount = UBound(Split(rng.Value, " "), 1) + 1
End Function
Давайте я расскажу вам, как ее использовать.
- Прежде всего, введите этот код в редакторе VBA.
- Затем вернитесь на свой рабочий лист и введите «= MyWordCount(» и сошлитесь на ячейку, в которой у вас есть значение.
И она вернет количество слов.
2. Подсчет слов в диапазоне ячеек
Теперь давайте перейдем на следующий уровень. Здесь вам нужно будет посчитать слова уже в диапазоне ячеек вместо одной ячейки.
Хорошая новость! Можно использовать ту же формулу (добавив небольшое изменение), которую мы использовали выше.
Вот эта формула:
= СУММПРОИЗВ(ДЛСТР(A1:A11)-ДЛСТР(ПОДСТАВИТЬ(A1:A11; » «;»»))+1)
В приведенной выше формуле A1: A11 — это диапазон ячеек, при вводе формулы в результате получим 55.
Как это работает?
Эта формула работает так же, как и первый метод, но только чуть сложнее. Разница лишь в том, что мы завернули ее в СУММПРОИЗВ (SUMPRODUCT) и ссылаемся на весь диапазон вместо одной ячейки.
Вы помните, что СУММПРОИЗВ (SUMPRODUCT) может работать с массивами? Поэтому, когда вы используете эту функцию, она возвращает массив, в котором у вас есть количество слов для каждой ячейки. Далее она суммирует эти цифры и сообщает вам количество слов в столбце.
3. Подсчет количества слов во всей таблицы с кодом VBA
Этот код является одним из списка полезных макросов, который я использую в своей работе, и он может помочь вам подсчитать все слова на листе.
Sub Word_Count_Worksheet()
Dim WordCnt As Long
Dim rng As Range
Dim S As String
Dim N As Long
For Each rng In ActiveSheet.UsedRange.Cells
S = Application.WorksheetFunction.Trim(rng.Text)
N = 0
If S <> vbNullString Then
N = Len(S) - Len(Replace(S, " ", "")) + 1
End If
WordCnt = WordCnt + N
Next rng
MsgBox "Всего " & Format(WordCnt, "#,##0") & " слов на активном листе"
End Sub
Когда вы запустите его, он покажет окно сообщения с количеством слов, которые у вас есть в активном листе.
4. Подсчет определенного слова/текстовой строки в диапазоне
Здесь у нас другая ситуация. Допустим, нам нужно посчитать определенное слово в диапазоне ячеек или проверить, сколько раз значение появляется в столбце.
Разберем на примере.
Ниже у нас есть диапазон из четырех ячеек, и из этого диапазона нам нужно посчитать количество появлений слова «понедельник».
Вот формула для этого:
= СУММПРОИЗВ ((ДЛСТР (A1:A4) — ДЛСТР (ПОДСТАВИТЬ (A1:A4; «понедельник»; «»)) / ДЛСТР(«понедельник»))
И когда вы введете ее, она возвратит количество понедельников. Ответ — 4.
Формула возвращает количество слов (частоту слова) в диапазоне, а не количество ячеек, в которых есть это слово.
Понедельник встречается четыре раза в трех ячейках.
Как это работает?
Чтобы понять эту функцию, вам снова нужно разделить ее на четыре части.
В первой части функция ДЛСТР (LEN) возвращает массив количества символов в ячейках.
Вторая часть возвращает массив подсчета символов в ячейках, удалив слово «понедельник».
В третьей части функция ДЛСТР (LEN) возвращает длину символов слова «понедельник».
После этого вычитаем первую часть из второй, а затем делим ее на третью часть. Возвращен массив с количеством слов «понедельник» в каждой ячейке.
В четвертой части СУММПРОИЗВ (SUMPRODUCT) возвращает сумму этого массива и дает количество понедельников в диапазоне.
Заключение
Всякий раз, когда вы печатаете какой-то текст в ячейке или диапазоне ячеек, вы можете использовать эти методы для контроля количества слов.
Я мечтаю, что когда-нибудь в будущем в Excel появится эта опция. Ну а пока будем пользоваться этими замечательными методами.
Я надеюсь, что статья была полезной для вас. Какой метод вам понравился больше всех?
Не забудьте поделиться своими мнениями со мной в разделе комментариев, для меня это важно. И, пожалуйста, не забудьте поделиться со своими друзьями, я уверен, что они это оценят.
Ошибка в формуле подсчета определенного слова в диапазоне:
Вот формула для этого: = СУММПРОИЗВ ((ДЛСТР (A1:A4) — ДЛСТР (ПОДСТАВИТЬ (A1:A4; «понедельник»; «»)) / ДЛСТР(«понедельник»)) — не хватает скобки: (A1:A4; «понедельник»; «»)))
Ниже на скриншоте все правильно.