Yo andaba en lo mismo y encontré esta fórmula en la web, quizás la puedas aplicar:
=SUMA(SI(LARGO(ESPACIOS(B2))=0;0;LARGO(ESPACIOS(B2))-LARGO(SUSTITUIR(B2;" ";""))+1))
También puedes aplicar la siguiente macro:
Function contarpalabras(celda As Range)
'si ponemos un espacio antes de los signos de
'puntuación, mejor los eliminamos del cómputo
datos = Replace(celda, ".", "")
datos = Replace(datos, ",", "")
datos = Replace(datos, ";", "")
datos = Replace(datos, ":", "")
'reemplazamos los posibles dobles espacios
datos = Replace(datos, " ", " ")
'eliminamos los espacios inicial y final
datos = Trim(datos)
'Descomponemos la cadena, en subcadenas,
'para lo cual indicamos el delimitador " ", aunque
'por defecto, podríamos haberlo omitido,
'pues es ese mismo (espacio)
palabras = Split(datos, " ")
'Buscamos el máximo de palabras que se han
'formado, y le sumamos 1, porque el array
'comienza a contar desde cero
numero_de_palabras = UBound(palabras) + 1
'asignamos ese máximo a la función
contarpalabras = numero_de_palabras
End Function