это будет работать очень хорошо для одной ячейки, но мне нужно выбрать диапазон из множества ячеек, за которые проголосовали
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