A continuación, veremos un programa en Excel VBA que cuenta la cantidad de palabras en un rango seleccionado. Se supone que uno o más espacios separan 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. Una variable Integer que llamamos cellWords, una variable Integer que llamamos totalWords y 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 Range rng con el rango seleccionado y las dos variables de tipo Integer con valor 0.

Set rng = Selection
cellWords = 0
totalWords = 0

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

For Each cell In rng

Next cell

Nota: rng y cell se eligen al azar aquí, puede usar cualquier nombre. Recuerde hacer referencia 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 en el contenido de la variable. A continuación, eliminamos los espacios al principio y al final (si los hay). En Excel VBA, puede usar la función Recortar para esto. Por ejemplo, "excel vba" se convertirá en "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 palabras, pero está bien en este ejemplo.

6. En este punto, una celda aún puede estar vacía. Si la celda está vacía, asignamos el valor 0 a la variable cellWords. En caso contrario, 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

Por supuesto, una celda puede contener más de una palabra. Eso es exactamente lo que queremos averiguar 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, "") busca la posición del primer espacio en el contenido.

7. Usaremos la estructura Do While Loop . El código colocado entre estas palabras (en los pasos 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 bucle Do While en su declaración If.

Do While InStr(content, " ") > 0

Loop

8. A continuación, tomamos la parte del contenido comenzando 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 nuevamente.

content = Trim(content)

Resultado: "vba"

10. Incrementamos las palabras de celda en 1.

cellWords = cellWords + 1

Este bucle Do While se repetirá siempre que el contenido contenga un espacio y, por lo tanto, más palabras. En nuestro ejemplo, salimos del bucle Do While, ya que "vba" ya no contiene un 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 se hayan verificado todas las celdas.

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

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

13. Pruebe el programa.

Resultado:

Resultado de Count Words

5/5 Completado! Obtenga más información sobre la manipulación de cadenas>
Siguiente capítulo: fecha y hora