Macro para contar palabras en Excel

En esta ocasión crearemos una nueva función VBA para contar palabras en Excel y verás que la solución será muy sencilla. Sin embargo, si no deseas utilizar VBA, entonces te recomiendo utilizar la siguiente fórmula:

=LARGO(ESPACIOS(A1)) - LARGO(SUSTITUIR(ESPACIOS(A1), " ", "")) + 1

Para comprender mejor el desarrollo de esta fórmula te sugiero consultar el artículo Contar palabras en Excel. Un inconveniente de la fórmula anterior es su longitud y el cuidado que debemos tener al momento de utilizarla pero podemos evitar dichos inconvenientes si construimos nuestra propia función VBA la cual será mucho más sencilla de usar. Comenzaremos haciendo una breve revisión de las funciones VBA a utilizar.

Contar palabras en Excel con una macro

La función Split

La función Split en VBA separa una cadena de texto en base al carácter delimitador indicado y nos devuelve un arreglo que contendrá cada una de las partes que se han separado. Por ejemplo, si tengo la cadena de texto “1-2-3-4-5” y utilizo la función Split de la siguiente manera:

Split("1-2-3-4-5", "-") = {"1","2","3","4","5"}

Obtendré como resultado un arreglo con 5 elementos que serán los números del 1 al 5 y que serán el resultado de dividir la cadena de texto original utilizando el guion medio “-“. El primer argumento de la función Split es la cadena de texto original y el segundo argumento es el carácter delimitador. Si se omite el segundo argumento entonces se utilizará por defecto el espacio en blanco. Por ejemplo, considera la siguiente instrucción:

Split("uno dos tres") = {"uno","dos","tres"}

Ya que no he especificado el carácter delimitador, la función Split utiliza el espacio en blanco y como resultado devuelve un arreglo con 3 elementos donde cada uno contiene una palabra  de la cadena de texto original. Es así como podemos separar cualquier cadena de texto en palabras y de esta manera nos acercamos a la solución de nuestro problema, solo nos falta  hacer la cuenta de los elementos del arreglo que nos ha devuelto la función Split.

La función UBound

Para obtener el número de elementos de un arreglo en VBA podemos utilizar la función UBound. El único argumento obligatorio de esta función es el arreglo del cual deseamos contar los elementos:

Dim arreglo(1 to 5) as Integer
UBound(arreglo)

En este ejemplo, la función Ubound devolverá el valor 5 ya que el arreglo está formado precisamente por cinco elementos. Con las dos funciones presentadas hasta ahora podemos solucionar el problema de contar palabras en Excel con VBA.

Contar palabras en Excel con VBA

Para crear nuestra función he agregado un nuevo módulo al proyecto VBA y he colocado el siguiente código:

Function CONTARPALABRAS(Texto As String)

Dim Espacios As String
Espacios = Application.WorksheetFunction.Trim(Texto)

CONTARPALABRAS = UBound(Split(Espacios)) + 1

End Function

La línea 3 define una variable que utilizaré para almacenar la misma cadena de texto original pero garantizando que no tenga espacios dobles y para lograrlo en la línea 4 he utilizado la función de Excel TRIM, que en español es la función ESPACIOS. Esta función garantizará que todas las palabras estén separadas por espacios sencillos. En la línea 6 hacemos uso de las funciones Split y UBound para regresar la cantidad de palabras en la cadena de texto original. En la siguiente imagen puedes observar el resultado de probar la nueva función:

Macro para contar palabras en Excel

Descarga el libro de trabajo y continúa experimentado con esta función VBA para contar palabras en Excel.