/ / Count Words i Excel VBA

Tæl ord i Excel VBA

Nedenfor vil vi se på et program i Excel VBA at tæller antallet af ord i et valgt område. Et eller flere mellemrum antages at adskille ord.

Situation:

Tæl ord i Excel VBA

1. For det første erklærer vi to rækkeobjekter og tre variabler. Vi kalder Range objekter rng og celle. En integer-variabel vi kalder cellWords, en integer-variabel vi kalder totalwords og en streng variabel vi kalder indhold.

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

2. Vi initialiserer Range objekt rng med det valgte område og de to variabler af typen Integer med værdi 0.

Set rng = Selection
cellWords = 0
totalWords = 0

3. Vi ønsker at tjekke hver celle i et tilfældigt valgt interval (dette område kan være af en hvilken som helst størrelse). I Excel VBA kan du bruge For Each Next-sløjfen til dette. Tilføj følgende kode linjer:

For Each cell In rng

Next cell

Bemærk: rng og celle er tilfældigt valgt her, du kan bruge navne. Husk at henvise til disse navne i resten af ​​din kode.

4. Dernæst bestemmer vi for hver celle i dette interval, hvor mange ord det indeholder. For at ignorere en celle, der indeholder en formel, tilføj følgende kodelinje mellem For hver og næste (kun hvis celle.HasFormula er falsk fortsætter vi).

If Not cell.HasFormula Then

End If

5. Først skriver vi indholdet af cellen til det variable indhold. Dernæst fjerner vi mellemrummet i begyndelsen og slutningen (hvis der er nogen). I Excel VBA kan du bruge Trim-funktionen til dette. Eksempelvis vil "excel vba" blive konverteret til "excel vba". Tilføj følgende kodelinjer i din If-erklæring.

content = cell.Value
content = Trim(content)

Bemærk: trimfunktionen i Excel VBA fjerner ikke ekstra mellemrum mellem ord, men det er OK i dette eksempel.

6. På dette tidspunkt kan en celle stadig være tom. Hvis cellen er tom, tildeler vi værdien 0 til den variable cellWords. Hvis ikke, indeholder det mindst et ord, og vi tildeler værdien 1 til den variable cellWords. Tilføj følgende kodelinjer i din If-erklæring.

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

En celle kan indeholde mere end et ord selvfølgelig. Det er præcis det, vi vil finde ud af nu. Som et eksempel tager vi: "excel vba". Hvis en celle indeholder mindst ét ​​rum på dette stadium, indeholder den mindst et ord. Du kan bruge Instr funktionen i Excel VBA for at søge efter et mellemrum. Instr (indhold, "") finder placeringen af ​​det første rum i indhold.

7. Vi vil gøre brug af Do While Loop strukturen. Kode placeret mellem disse ord (i trin 8, 9 og 10) gentages, så længe delen efter Do While er sand. Vi vil gentage disse trin, så længe Instr (indhold, "")> 0 er sandt (så længe indhold indeholder plads og dermed flere ord). Tilføj Do Do While Loop i din If-erklæring.

Do While InStr(content, " ") > 0

Loop

8. Næste tager vi den del af indhold, der starter ved positionen i det første rum. Vi bruger Mid-funktionen til dette.

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

For eksempel: Mid ("excel vba", InStr ("excel vba", "")) vil give "vba".

9. Vi trimmer strengen igen.

content = Trim(content)

Resultat: "vba"

10. Vi øger cellWords med 1.

cellWords = cellWords + 1

Dette gøres mens Loop gentages så længe somindhold indeholder et mellemrum og dermed flere ord. I vores eksempel forlader vi Do While Loop, da "vba" ikke indeholder mere plads! Resultat: Denne celle indeholder 2 ord.

11. Efter at have tjekket en celle, tilføjer vi cellWords til variablen totalWords. Denne kode linje skal placeres uden for Do While Loop, men i If-sætningen.

totalWords = totalWords + cellWords

Hele processen starter igen for den næste celle, indtil alle celler er blevet kontrolleret.

12. Endelig viser vi værdien af ​​totalWords ved hjælp af en msgbox. Denne kode linje skal placeres uden for For hver næste sløjfe.

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

13. Test programmet.

Resultat:

Count Words resultat

Læs også: