
Fórmula genérica
=LEN(TRIM(A1))-LEN(SUBSTITUTE(A1," ",""))+1
Resumo
Para contar o total de palavras em uma célula, você pode usar uma fórmula baseada nas funções LEN e SUBSTITUTE, com a ajuda da função TRIM. No exemplo mostrado, a fórmula na célula C5, copiada, é:
=LEN(TRIM(B5))-LEN(SUBSTITUTE(B5," ",""))+1
A fórmula retorna a contagem de palavras na célula B5.
Explicação
O Excel não tem uma função dedicada para contar palavras em uma célula. No entanto, com um pouco de engenhosidade, você pode criar tal fórmula usando as funções SUBSTITUTE e LEN, com a ajuda de TRIM, como mostrado no exemplo. Em um nível superior, esta fórmula usa a função LEN para contar o número de caracteres na célula, com e sem espaços, então usa a diferença para descobrir a contagem de palavras. Isso funciona porque a contagem de palavras é igual ao número de espaços + 1, desde que haja um espaço entre cada palavra.
A primeira parte da fórmula conta os caracteres na célula B5, depois de remover o espaço extra:
=LEN(TRIM(B5)) // normalize space, count characters
Dentro de LEN, a função TRIM primeiro remove quaisquer espaços extras entre palavras, ou no início ou no final do texto. Isso é importante, pois quaisquer espaços extras prejudicarão a contagem de palavras. Nesse caso, não há caracteres de espaço extras, então TRIM retorna o texto original diretamente para a função LEN, que retorna 30:
LEN("All Quiet on the Western Front") // returns 30
Neste ponto, temos:
=30-LEN(SUBSTITUTE(B5," ",""))+1
Em seguida, usamos a função SUBSTITUTE para remover todos os caracteres de espaço do texto:
SUBSTITUTE(B5," ","") // strip all space
Observe que SUBSTITUTE está configurado para procurar um caractere de espaço ("") e substituí-lo por uma string vazia (""). Por padrão, SUBSTITUTE substituirá todos os espaços. O resultado é entregue diretamente à função LEN, que retorna a contagem:
LEN("AllQuietontheWesternFront") // returns 25
LEN retorna 25, o número de caracteres restantes depois que todo o espaço foi removido. Agora podemos simplificar a fórmula para:
=30-25+1 // returns 6
que retorna 6 como resultado final, o número de palavras na célula B5.
Lidando com células em branco
A fórmula no exemplo retornará 1 mesmo se a célula estiver vazia ou contiver apenas espaço. Isso acontece porque estamos adicionando 1 incondicionalmente, após contar os caracteres de espaço entre as palavras. Para se proteger contra esse problema, você pode adaptar a fórmula conforme mostrado abaixo:
=LEN(TRIM(B5))-LEN(SUBSTITUTE(B5," ",""))+(LEN(TRIM(B5))>0)
Observe que substituímos 1 por esta expressão:
LEN(TRIM(B5))>0
Este código primeiro corta B5 e, em seguida, verifica o comprimento. Se B5 contiver texto, LEN retornará um número positivo e a expressão retornará TRUE. Se B5 estiver vazio ou contiver apenas espaço, TRIM retornará uma string vazia ("") para LEN. Nesse caso, LEN retorna zero (0) e a expressão retorna FALSE. O truque é que VERDADEIRO e FALSO são avaliados como 1 e zero, respectivamente, quando envolvidos em qualquer operação matemática. Como resultado, a expressão apenas adiciona 1 quando há texto em B5. Caso contrário, adiciona zero (0). Essa lógica também pode ser escrita com a instrução da função IF como esta:
IF(LEN(TRIM(B5))>0,1,0)
e o resultado seria o mesmo. A expressão acima é simplesmente mais compacta.