Количество слов в MS Excel 2010

342
PeterH

Есть ли встроенная функция для подсчета количества слов, используемых в ?

А конкретнее количество слов в выбранном диапазоне?

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

Количество слов в MS Excel 2010

Заметка. Меня не интересует количество символов и т. Д., Только количество слов.

0
Будет ли ** слово ** набором символов, разделенных одним или несколькими пробелами? Gary's Student 6 лет назад 0
да, например, число 5 в подсчете слов MS считается словом, я просто хочу что-то как можно ближе к этому на самом деле PeterH 6 лет назад 0

3 ответа на вопрос

3
Gary's Student

С некоторым текстом в C1, в D1 введите:

=LEN(C1)-LEN(SUBSTITUTE(TRIM(C1)," ",""))+1 

Это может быть легко изменено для обработки более чем одной ячейки.

EDIT # 1:

Чтобы сделать это для всего столбца C, используйте:

=SUMPRODUCT(--(LEN(C:C)-LEN(SUBSTITUTE(TRIM(C:C)," ",""))+1)*(C:C<>"")) 

это будет работать очень хорошо для одной ячейки, но мне нужно выбрать диапазон из множества ячеек, за которые проголосовали PeterH 6 лет назад 0
@ User91504 Смотрите мой ** РЕДАКТИРОВАТЬ # 1 ** Gary's Student 6 лет назад 0
Действительно мило. Я тоже добавлю +1. :-) Bandersnatch 6 лет назад 0
@Bandersnatch Спасибо ........ интересная часть - использование `SUMPRODUCT ()` Gary's Student 6 лет назад 0
Да. Это интересно и проницательно. Хотел бы я проголосовать дважды. :-) Bandersnatch 6 лет назад 0
1
PeterH

Немного покопавшись в форумах, я нашел приведенный ниже код, который работает довольно близко к тому, что я искал:

Sub CountWords()  Dim MyRange As Range Dim CellCount As Long Dim TotalWords As Long Dim NumWords As Integer Dim Raw As String  'ACTIVE SELECTION Set MyRange = ActiveSheet.Range(ActiveWindow.Selection.Address) TotalWords = 0  For CellCount = 1 To MyRange.Cells.Count  If Not MyRange.Cells(CellCount).HasFormula Then  Raw = MyRange.Cells(CellCount).Value Raw = Trim(Raw) If Len(Raw) > 0 Then  NumWords = 1  Else  NumWords = 0  End If  While InStr(Raw, " ") > 0 Raw = Mid(Raw, InStr(Raw, " ")) Raw = Trim(Raw) NumWords = NumWords + 1  Wend  TotalWords = TotalWords + NumWords  End If  Next CellCount  MsgBox "There are " & TotalWords & " words in the selection."  End Sub 
1
pat2015

Пока вы уже нашли решение, попробуйте этот UDF. Не всесторонне проверено все же. Это обеспечит, чтобы лишние пробелы на всякий случай (например, случайно введенные более одного пробела между словами) не учитывались при подсчете слов, а также учитывался результат из ячеек формулы.

Public Function GetWordCount(r As Range) As Long  Dim strTest As String Dim strArray() As String Dim intCount As Long Dim WordCount As Long WordCount = 0  For Each cell In r  strTest = cell.Value strArray = Split(strTest, " ")  For intCount = LBound(strArray) To UBound(strArray) strArray(intCount) = Trim(strArray(intCount)) Next  For intCount = LBound(strArray) To UBound(strArray) If strArray(intCount) = "" Then Else WordCount = WordCount + 1 End If Next  Next cell GetWordCount = WordCount  End Function