/ / Laske sanat Excel VBA: ssa

Laske sanat Excel VBA: ssa

Alla tarkastelemme ohjelmaa Excel VBA että laskee sanojen määrän valitulla alueella. Yhden tai useamman tilan oletetaan erottavan sanoja.

Tilanne:

Laske sanat Excel VBA: ssa

1. Ensin mainitsemme kaksi Range-objektia ja kolme muuttujaa. Me kutsumme Range-objektien rng ja solun. Yksi kokonaisluku muuttuja kutsumme cellWordsiksi, yhden kokonaisluvun, jota kutsumme totalWordsiksi ja yhdeksi String-muuttujaksi, jota kutsumme sisällöksi.

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

2. Aloitamme Range-objektin rng valitulla alueella ja kahdella tyypin Integer-muuttujalla arvolla 0.

Set rng = Selection
cellWords = 0
totalWords = 0

3. Haluamme tarkistaa jokaisen solun satunnaisesti valitulla alueella (tämä alue voi olla mikä tahansa koko). Excel VBA: ssa voit käyttää tätä varten jokaisen seuraavan silmukan. Lisää seuraavat koodiluokat:

For Each cell In rng

Next cell

Huomaa: rng ja solu valitaan satunnaisesti, voit käyttää mitä tahansa nimeä. Muista viitata näihin nimiin muussa koodissa.

4. Seuraavaksi määritämme kunkin solun tällä alueella, kuinka monta sanaa se sisältää. Jos haluat sivuuttaa solun, joka sisältää kaavan, lisää seuraava koodirivi rivin Each (Seuraava) kohtaan ja Seuraava (vain jos cell.HasFormula on väärä, jatkamme).

If Not cell.HasFormula Then

End If

5. Ensin kirjoitamme solun sisällön muuttuvaan sisältöön. Seuraavaksi poistetaan tilat alussa ja lopussa (jos sellaisia ​​on). Excel VBA: ssa voit käyttää Trim-toimintoa. Esimerkiksi "excel vba" muunnetaan "excel vba": ksi. Lisää If-lausekkeeseen seuraavat koodiluokat.

content = cell.Value
content = Trim(content)

Huomaa: Excel VBA: n leikkaustoiminto ei poista ylimääräisiä välilyöntejä sanojen välillä, mutta se on OK tässä esimerkissä.

6. Tässä vaiheessa solu voi silti olla tyhjä. Jos solu on tyhjä, annamme arvon 0 muuttujalle cellWords. Jos ei ole, se sisältää vähintään yhden sanan ja arvo 1 on määritetty muuttuviin soluohjelmiin. Lisää If-lausekkeeseen seuraavat koodiluokat.

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

Solu voi tietenkin sisältää enemmän kuin yhden sanan. Se on juuri se, mitä me haluamme tietää nyt, esimerkkinä: "excel vba" Jos solussa on tässä vaiheessa vähintään yksi tila, se sisältää vähintään yhden sanan. Excel VBA etsii tilaa. Instr (sisältö, "") löytää sisällön ensimmäisen tilan sijainnin.

7. Käytämme Do While Loop -rakennetta. Näiden sanojen välissä oleva koodi (vaiheissa 8, 9 ja 10) toistetaan niin kauan kuin osa Do Forin jälkeen on totta. Haluamme toistaa nämä vaiheet niin kauan kuin Instr (content, ")> 0 on totta (niin kauan kuin sisältö sisältää tilaa ja siten enemmän sanoja). Lisää Do While Loop -toiminto If-lausekkeesi.

Do While InStr(content, " ") > 0

Loop

8. Seuraavaksi otetaan osa sisällöstä alkaen ensimmäisestä tilasta. Käytämme tätä varten Mid-toimintoa.

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

Esimerkiksi: Mid ("excel vba", InStr ("excel vba", "")) antaa "vba".

9. Leikkaamme merkkijonon uudelleen.

content = Trim(content)

Tulos: "vba"

10. Kasvatamme soluhoitoja yhdellä.

cellWords = cellWords + 1

Tämä Do While Loop -toisto toistetaan niin kauan kuinsisältö sisältää tilaa ja siten enemmän sanoja. Esimerkissämme poistumme Do While Loopista, koska "vba" ei sisällä enää tilaa! Tulos: tämä solu sisältää 2 sanaa.

11. Sen jälkeen, kun olet tarkistanut yhden solun, lisäämme soluyhdistelmät muuttuviin kokonaisäännöksiin. Tämä koodirivi on sijoitettava Do While Loopin ulkopuolelle, mutta If-lauseen.

totalWords = totalWords + cellWords

Koko prosessi alkaa jälleen seuraavalle solulle, kunnes kaikki solut on tarkistettu.

12. Lopuksi näytämme koko sanan arvon msgboxilla. Tämä koodirivi on sijoitettava jokaisen seuraavan silmukan ulkopuolelle.

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

13. Testaa ohjelma.

Tulos:

Laskun sanat tuloksena

Lue myös: