/ / Count Words "Excel" VBA

Žodžių skaičiavimas Excel VBA

Žemiau apžvelgsime programą Excel VBA tai skaičiuoja žodžių skaičių pasirinktame diapazone. Manoma, kad viena ar daugiau erdvių yra atskirti žodžiai.

Padėtis:

Žodžių skaičiavimas Excel VBA

1. Pirma, mes deklaruojame du Range objektus ir tris kintamuosius. Mes vadiname Range objektus rng ir langelį. Vienas integruotas kintamasis, kurį mes vadiname "cellWords", vienas kintamasis, kurį mes vadiname totalWords, ir vienas kintamasis String, kurį mes vadiname turiniu.

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

2. Inicializuojame Range object rng su pasirinktu diapazonu ir du kintamuosius tipo Integer su reikšme 0.

Set rng = Selection
cellWords = 0
totalWords = 0

3. Mes norime patikrinti kiekvieną langelį atsitiktine tvarka pasirinktame diapazone (šis diapazonas gali būti bet kokio dydžio). "Excel VBA" galite naudoti "Už kiekvieną kitą kilpą". Įtraukite šias kodo eilutes:

For Each cell In rng

Next cell

Pastaba: čia atsitiktine tvarka pasirenkami rng ir ląstelės, galite naudoti bet kokius pavadinimus. Nepamirškite nurodyti šių pavadinimų likusioje jūsų kodo dalyje.

4. Tada kiekvienai tokiai diapazone esanti ląstelė nustato kiek žodžių yra. Jei norite ignoruoti ląstelę, kurioje yra formulė, pridėkite šią kodo eilutę tarp "Kiekvieno" ir "Kitas" (tik jei lakštas "HasFormula" yra klaidingas, mes tęsime).

If Not cell.HasFormula Then

End If

5. Pirma, mes rašome langelio turinį kintamojo turinio. Tada mes pašaliname tarpus pradžioje ir pabaigoje (jei yra). "Excel VBA" galite naudoti "Trim" funkciją. Pavyzdžiui, "excel vba" bus paversta "excel vba". Įrašykite šias kodo eilutes savo teiginyje "If".

content = cell.Value
content = Trim(content)

Pastaba: "Excel VBA" apdailos funkcija nepašalina papildomų tarpų tarp žodžių, bet šiame pavyzdyje tai gerai.

6. Šiuo metu ląstelė vis tiek gali būti tuščia. Jei ląstelė yra tuščia, priskiriame reikšmę 0 kintamajam "cellwords". Jei ne, jame yra bent vienas žodis, ir mes priskiriame reikšmę 1 kintamojo "cell_2". Įrašykite šias kodo eilutes savo teiginyje "If".

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

Ląstelėje, žinoma, gali būti daugiau nei vienas žodis. Tai, ką mes norime išsiaiškinti dabar, pavyzdžiu: "excel vba". Jei ląstelių šiame etape yra bent viena vieta, jame yra bent dar vienas žodis. Jūs galite naudoti funkciją "Instr" Excel VBA ieškoti vietos. Instr (turinys, "") nustato pirmojo turinio poziciją.

7. Mes panaudosime "Do Loop" struktūrą. Kodas, pateiktas tarp šių žodžių (8, 9 ir 10 žingsniuose), bus kartojamas tol, kol dalis po "Do Ne" yra teisinga. Mes norime pakartoti šiuos veiksmus tol, kol "Instr (turinys," ")> 0 yra teisingas (tol, kol turinys turi tarpą, taigi ir daugiau žodžių). Įrašykite "Do Loop" (be loop) savo "If" teiginyje.

Do While InStr(content, " ") > 0

Loop

8. Toliau mes turime dalį turinio, pradedant nuo pirmosios vietos pozicijos. Mes naudojame Mid funkciją.

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

Pavyzdžiui: Mid ("excel vba", InStr ("excel vba", "")) duos "vba".

9. Mes vėl supjaustome eilutę.

content = Trim(content)

Rezultatas: "vba"

10. Mes padidiname CellWords iki 1.

cellWords = cellWords + 1

Ši "Do Loop" pakartotinai kartojamaturinys yra tarpas, taigi ir daugiau žodžių. Mūsų pavyzdyje mes išeiname iš "Do Loop", nes "vba" neturi erdvės! Rezultatas: šiame lange yra 2 žodžiai.

11. Po to, kai patikrinote vieną langelį, mes įtraukiame "AdWords" į "totalWords" kintamąjį. Ši kodo eilutė turi būti už "Do Loop", o "If" sąraše.

totalWords = totalWords + cellWords

Visas procesas prasideda dar kartą kitai ląstelei, kol visos ląstelės yra patikrintos.

12. Galiausiai rodome "totalWords" reikšmę naudodamiesi "msgbox". Ši kodo eilutė turėtų būti už kiekvienos kitos kilpos ribų.

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

13. Patikrinkite programą.

Rezultatas:

Žodžių rezultatas

Taip pat perskaitykite: