/ / Contar palabras en Excel VBA

Contar palabras en Excel VBA

A continuación veremos un programa en Excel VBA ese cuenta el numero de palabras en un rango seleccionado. Se suponen uno o más espacios para separar palabras.

Situación:

Contar palabras en Excel VBA

1. Primero, declaramos dos objetos Range y tres variables. Llamamos a los objetos Range rng y cell. A una variable Integer que llamamos cellWords, a una variable Integer que llamamos totalWords y a una variable String que llamamos contenido.

Dim rng As Range, cell As Range
Dim cellWords, totalWords As Integer, content As String

2. Inicializamos el objeto Rango rng con el rango seleccionado y las dos variables de tipo Integer con valor 0.

Set rng = Selection
cellWords = 0
totalWords = 0

3. Queremos verificar cada celda en un rango seleccionado al azar (este rango puede ser de cualquier tamaño). En Excel VBA, puede usar el bucle For Each Next para esto. Agregue las siguientes líneas de código:

For Each cell In rng

Next cell

Nota: aquí se seleccionan aleatoriamente rng y celda, puede usar cualquier nombre. Recuerde referirse a estos nombres en el resto de su código.

4. A continuación, determinamos para cada celda de este rango cuántas palabras contiene. Para ignorar una celda que contiene una fórmula, agregue la siguiente línea de código entre For Each y Next (solo si cell.HasFormula es falso, continuamos).

If Not cell.HasFormula Then

End If

5. Primero, escribimos el contenido de la celda al contenido variable. A continuación, eliminamos los espacios al principio y al final (si hay alguno). En Excel VBA, puede usar la función Trim para esto. Por ejemplo, "excel vba" se convertirá a "excel vba". Agregue las siguientes líneas de código en su declaración If.

content = cell.Value
content = Trim(content)

Nota: la función de recorte en Excel VBA no elimina espacios adicionales entre las palabras, pero eso está bien en este ejemplo.

6. En este punto, una celda todavía puede estar vacía. Si la celda está vacía, asignamos el valor 0 a la variable cellWords. Si no, contiene al menos una palabra y asignamos el valor 1 a la variable cellWords. Agregue las siguientes líneas de código en su declaración If.

If content = "" Then
    cellWords = 0
Else
    cellWords = 1
End If

Una celda puede contener más de una palabra, por supuesto. Eso es exactamente lo que queremos descubrir ahora. Como ejemplo, tomamos: "excel vba". Si una celda contiene al menos un espacio en esta etapa, contiene al menos una palabra más. Puede usar la función Instr en Excel VBA para buscar un espacio. Instr (contenido, "") encuentra la posición del primer espacio en el contenido.

7. Haremos uso de la estructura Do While Loop. El código colocado entre estas palabras (en el paso 8, 9 y 10) se repetirá siempre que la parte posterior a Do While sea verdadera. Queremos repetir estos pasos siempre que Instr (contenido, "")> 0 sea verdadero (siempre que el contenido contenga un espacio y, por lo tanto, más palabras). Agregue el Do While Loop en su declaración If.

Do While InStr(content, " ") > 0

Loop

8. A continuación, tomamos la parte del contenido que comienza en la posición del primer espacio. Usamos la función Mid para esto.

content = Mid(content, InStr(content, " "))

Por ejemplo: Mid ("excel vba", InStr ("excel vba", "")) dará "vba".

9. Recortamos la cuerda de nuevo.

content = Trim(content)

Resultado: "vba"

10. Incrementamos las palabras de celda por 1.

cellWords = cellWords + 1

Este Do While Loop se repetirá mientrasEl contenido contiene un espacio y por lo tanto más palabras. En nuestro ejemplo, salimos de Do While Loop ya que "vba" ya no contiene espacio. Resultado: esta celda contiene 2 palabras.

11. Después de haber marcado una celda, agregamos cellWords a la variable totalWords. Esta línea de código debe colocarse fuera del bucle Do While, pero en la instrucción If.

totalWords = totalWords + cellWords

Todo el proceso comienza de nuevo para la siguiente celda hasta que todas las celdas hayan sido verificadas.

12. Finalmente, mostramos el valor de totalWords usando un msgbox. Esta línea de código debe colocarse fuera del bucle For Each Next.

MsgBox totalWords & " words found in the selected range."

13. Probar el programa.

Resultado:

Resultado de contar palabras

Lea también: