Laske sanat Excel VBA: ssa - Helpot Excel -makrot

Sisällysluettelo

Alla tarkastelemme ohjelmaa Excel VBA että laskee sanojen määrän valitulla alueella. Yhden tai useamman välilyönnin oletetaan erottavan sanat.

Tilanne:

1. Ilmoitamme ensin kaksi alueobjektia ja kolme muuttujaa. Kutsumme alueen kohteita rng ja solu. Yhtä kokonaislukumuuttujaa kutsumme cellWordsiksi, yhtä kokonaislukumuuttujaa totalWordsiksi ja yhtä merkkijonomuuttujaa kutsumme sisällöksi.

Dim rng as Range, solu As Range
Himmennä solusanat, totalWords kokonaislukuna, sisältö merkkijonona

2. Alustamme Range -objektin rng valitulla alueella ja kahdella Integer -tyyppisellä muuttujalla arvolla 0.

Aseta rng = Valinta
cellWords = 0
totalWords = 0

3. Haluamme tarkistaa jokaisen solun satunnaisesti valitulta alueelta (tämä alue voi olla minkä kokoinen tahansa). Excel VBA: ssa voit käyttää For For Next Next -silmukkaa tähän. Lisää seuraavat koodirivit:

Jokaista solua kohti
Seuraava solu

Huomautus: rng ja solu valitaan satunnaisesti täällä, voit käyttää mitä tahansa nimiä. Muista viitata näihin nimiin koodin loppuosassa.

4. Seuraavaksi määritämme tämän alueen jokaiselle solulle, kuinka monta sanaa se sisältää. Jos haluat ohittaa kaavan sisältävän solun, lisää seuraava koodirivi Jokaisen ja seuraavan väliin (vain jos solu.HasFormula on epätosi).

Jos ei solua. On kaava sitten
Loppu Jos

5. Kirjoitetaan ensin solun sisältö muuttuvaan sisältöön. Seuraavaksi poistamme välilyönnit alussa ja lopussa (jos niitä on). Excel VBA: ssa voit käyttää Trim -toimintoa tähän. Esimerkiksi "excel vba" muunnetaan muotoon "excel vba". Lisää seuraavat koodirivit If -lauseeseesi.

sisältö = solu.arvo
sisältö = Leikkaa (sisältö)

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

6. Tässä vaiheessa solu voi silti olla tyhjä. Jos solu on tyhjä, määritämme arvon 0 muuttujalle cellWords. Jos ei, se sisältää vähintään yhden sanan ja annamme arvon 1 muuttujalle cellWords. Lisää seuraavat koodirivit If -lauseeseesi.

Jos sisältö = "" Sitten
cellWords = 0
Muu
cellWords = 1
Loppu Jos

Tietysti solu voi sisältää useamman kuin yhden sanan. Juuri tämän haluamme selvittää nyt. Otamme esimerkiksi: "excel vba". Jos solu sisältää tässä vaiheessa vähintään yhden välilyönnin, se sisältää vähintään yhden sanan lisää. Voit etsiä tilaa käyttämällä Excel VBA: n Instr -toimintoa. Instr (sisältö "") löytää sisällön ensimmäisen tilan sijainnin.

7. Käytämme Do While Loop -rakennetta. Näiden sanojen väliin (vaiheet 8, 9 ja 10) sijoitettu koodi toistetaan niin kauan kuin Do Do After -osa on totta. Haluamme toistaa nämä vaiheet niin kauan kuin Instr (content, "")> 0 on totta (niin kauan kuin sisältö sisältää välilyönnin ja siten enemmän sanoja). Lisää Do while -silmukka If -lauseeseesi.

Tee ollessa InStr (sisältö, "")> 0
Silmukka

8. Seuraavaksi otamme sisällön osan ensimmäisestä välilyönnistä. Käytämme tähän Mid -toimintoa.

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

Esimerkki: Mid ("excel vba", InStr ("excel vba", "")) antaa arvon "vba".

9. Leikataan merkkijono uudelleen.

sisältö = Leikkaa (sisältö)

Tulos: "vba"

10. Lisäämme solusanoja yhdellä.

cellWords = solusanat + 1

Tämä Do While Loop toistetaan niin kauan kuin sisältö sisältää välilyönnin ja siten enemmän sanoja. Esimerkissä poistumme Do While Loop -silmukasta, koska "vba" ei sisällä enää välilyöntiä! Tulos: tämä solu sisältää 2 sanaa.

11. Kun olemme tarkistaneet yhden solun, lisäämme cellWords muuttujaan totalWords. Tämä koodirivi tulee sijoittaa Do while -silmukan ulkopuolelle, mutta If -lauseeseen.

totalWords = totalWords + solusanat

Koko prosessi alkaa uudelleen seuraavalle solulle, kunnes kaikki solut on tarkistettu.

12. Lopuksi näytämme totalWords -arvon käyttämällä msgboxia. Tämä koodirivi tulee sijoittaa jokaisen seuraavan silmukan ulkopuolelle.

MsgBox totalWords & "sanat löytyivät valitulta alueelta".

13. Testaa ohjelma.

Tulos:

Tulet auttaa kehittämään sivuston jakaminen sivu ystävillesi

wave wave wave wave wave