Подсчет количества слов каждого столбца в VBA - PullRequest
0 голосов
/ 27 марта 2019

Я пытаюсь реализовать код, чтобы все количество слов из каждой ячейки в столбце можно было вычислить и отобразить в ячейке рядом с ними.

Я написал этот код, но он показывает ошибку Complie: цикл без Do, где, как у меня есть.

Sub Command()
    total_words = 1
    Dim ans_length As Integer
    Dim start_point As Integer

    Range("N3").Select

    Do Until ActiveCell.Value = ""

        ans_length = Len(ActiveCell.Offset(0, 13).Value)
        For start_point = 1 To ans_length
            If (Mid(ans_length, start_point, 1)) = " " Then
            total_words = total_words + 1
            End If
        ActiveCell.Offset(0, 12).Value = total_words
        ActiveCell.Offset(1, 0).Select
    Loop
End Sub

скажи, что у меня есть этот контент:

      Col1                      Col2
The only way to do multi   |      6
line comments in VB        |      4
the only option you have   |      5
is the single              |      3 

здесь у меня есть col2 по умолчанию и я пишу код VBA для col2

1 Ответ

0 голосов
/ 27 марта 2019

Такой подход UDF был бы более простым вариантом ... ну ... по-моему, в любом случае.

Public Function CountWords(ByVal strText As String) As Long
    Application.Volatile
    CountWords = UBound(Split(strText, " ")) + 1
End Function

... вы можете использовать это в любой ячейке.

enter image description here

Если вы хотите использовать свой первоначальный подход, вам не хватало СЛЕДУЮЩЕГО.

Sub Command()
    total_words = 1

    Dim ans_length As Integer
    Dim start_point As Integer

    Range("N3").Select

    Do Until ActiveCell.Value = ""
        ans_length = Len(ActiveCell.Offset(0, 13).Value)

        For start_point = 1 To ans_length
            If (Mid(ans_length, start_point, 1)) = " " Then
                total_words = total_words + 1
            End If
        Next start_point

        ActiveCell.Offset(0, 12).Value = total_words
        ActiveCell.Offset(1, 0).Select
    Loop
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...