Contagem de palavras no MS Excel 2010

0

Existe uma função embutida para contar o número de palavras usadas em ms-excel-2010 ?

E, mais especificamente, o número de palavras em um intervalo selecionado?

Atualmente, copio meu intervalo em ms-word para contar as palavras usadas.

Nota. Não estou interessado em números de caracteres, etc., apenas na contagem de palavras.

    
por PeterH 07.11.2017 / 13:47

3 respostas

1

Com um pouco de pesquisa sobre os fóruns, encontrei o código abaixo que funciona bem perto do que eu estava procurando:

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
    
por 07.11.2017 / 14:57
3

Com algum texto em C1 , em D1 digite:

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

Issopodeserfacilmentemodificadoparalidarcommaisdeumacélula.

EDIT#1:

ParafazerissoemtodaacolunaCuse:

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

    
por 07.11.2017 / 14:22
1

Enquanto você já encontrou uma solução, tente também este UDF. Não extensivamente testado embora. Ele garantirá que os espaços em excesso, por via das dúvidas (por exemplo, inseridos acidentalmente em mais de um espaço entre as palavras), não contam para a contagem de palavras e também para o valor das células de fórmula. O resultado é fatorado.

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  

    
por 07.11.2017 / 17:55