Skaičiuokite žodžius „Excel VBA“ - paprastos „Excel“ makrokomandos

Turinys

Žemiau apžvelgsime programą Excel VBA kad skaičiuoja žodžių skaičių pasirinktame diapazone. Manoma, kad viena ar daugiau tarpų atskiria žodžius.

Situacija:

1. Pirmiausia deklaruojame du diapazono objektus ir tris kintamuosius. Range objektus vadiname rng ir cell. Vieną sveikojo skaičiaus kintamąjį vadiname „cellWords“, vieną sveiko skaičiaus kintamąjį vadiname „totalWords“ ir vieną eilutės kintamąjį vadiname turiniu.

Dim rng As Range, langelis As Range
Šviesūs langelio žodžiai, totaliniai žodžiai kaip sveikasis skaičius, turinys kaip eilutė

2. Mes inicijuojame Range objektą rng pasirinktu diapazonu ir dviem kintamaisiais, kurių tipas Integer, kurių vertė 0.

Nustatyti rng = Pasirinkimas
cellWords = 0
totalWords = 0

3. Norime patikrinti kiekvieną atsitiktinai pasirinkto diapazono langelį (šis diapazonas gali būti bet kokio dydžio). „Excel VBA“ tam galite naudoti ciklą „Kiekvienam kitam“. Pridėkite šias kodo eilutes:

Kiekvienai langeliui In rng
Kitas langelis

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

4. Toliau kiekvienai šio diapazono langeliui nustatome, kiek žodžių jame yra. Jei norite ignoruoti langelį, kuriame yra formulė, pridėkite šią kodo eilutę tarp „For Every“ ir „Next“ (tik jei ląstelė. „HasFormula“ yra klaidinga, mes tęsiame).

Jei ne ląstelė. Ar yra formulė Tada
Pabaiga Jei

5. Pirma, langelio turinį įrašome į kintamąjį turinį. Tada mes pašaliname tarpus pradžioje ir pabaigoje (jei yra). „Excel VBA“ tam galite naudoti apkarpymo funkciją. Pavyzdžiui, „excel vba“ bus paversta „excel vba“. Prie savo teiginio pridėkite šias kodo eilutes.

turinys = langelis. Vertė
turinys = apkarpymas (turinys)

Pastaba: „Excel VBA“ apipjaustymo funkcija nepašalina papildomų tarpų tarp žodžių, tačiau šiame pavyzdyje tai gerai.

6. Šiuo metu ląstelė vis dar gali būti tuščia. Jei langelis tuščias, kintamajam cellWords priskiriame reikšmę 0. Jei ne, jame yra bent vienas žodis ir mes priskiriame reikšmę 1 kintamajam cellWords. Pridėkite šias kodo eilutes prie savo teiginio.

Jei turinys = "" Tada
cellWords = 0
Kitas
cellWords = 1
Pabaiga Jei

Žinoma, langelyje gali būti daugiau nei vienas žodis. Būtent tai mes norime išsiaiškinti dabar. Kaip pavyzdį imame: „excel vba“. Jei langelyje šiame etape yra bent viena erdvė, jame yra dar bent vienas žodis. Norėdami ieškoti vietos, galite naudoti „Excel VBA“ funkciją „Instr“. Instr (turinys "") randa pirmosios turinio vietos vietą.

7. Mes naudosime „Do while Loop“ struktūrą. Tarp šių žodžių esantis kodas (8, 9 ir 10 veiksmuose) bus kartojamas tol, kol dalis po „Do Do“ yra teisinga. Šiuos veiksmus norime kartoti tol, kol „Instr“ (turinys, „“)> 0 yra tiesa (tol, kol turinyje yra tarpo ir daugiau žodžių). Prie savo teiginio pridėkite ciklą „Daryti kol“.

Atlikite „InStr“ (turinys, „“)> 0
Kilpa

8. Toliau imame turinio dalį, prasidedančią nuo pirmosios vietos. Tam naudojame vidurio funkciją.

turinys = vidutinis (turinys, „InStr“ (turinys, „“))

Pavyzdžiui: „Mid“ („excel vba“, „InStr“ („excel vba“, „“)) suteiks „vba“.

9. Mes vėl nukerpame stygą.

turinys = apkarpymas (turinys)

Rezultatas: "vba"

10. Mes padidiname langelio žodžius 1.

ląstelės žodžiai = ląstelės žodžiai + 1

Ši „Do while Loop“ bus kartojama tol, kol turinyje bus tarpas ir daugiau žodžių. Mūsų pavyzdyje išeiname iš Do Do ciklo, nes „vba“ nebėra tarpo! Rezultatas: šiame langelyje yra 2 žodžiai.

11. Patikrinę vieną langelį, pridedame cellWords prie kintamojo totalWords. Ši kodo eilutė turėtų būti dedama už ciklo „Do while“, bet sakinyje „If“.

totalWords = totalWords + cellWords

Visas procesas prasideda iš naujo kitoje ląstelėje, kol bus patikrintos visos ląstelės.

12. Galiausiai mes rodome totalWords reikšmę naudodami „msgbox“. Ši kodo eilutė turėtų būti dedama už ciklo „Kiekvienam kitam“.

„MsgBox totalWords“ ir „žodžiai rasti pasirinktame diapazone“.

13. Išbandykite programą.

Rezultatas:

Padėsite svetainės plėtrą, dalintis puslapį su draugais

wave wave wave wave wave