Počítajte slová v programe Excel VBA - ľahké makrá programu Excel

Obsah

Nižšie sa pozrieme na program v Excel VBA že počíta počet slov vo vybranom rozsahu. Predpokladá sa, že na oddelenie slov je jedna alebo viac medzier.

Situácia:

1. Najprv deklarujeme dva objekty Range a tri premenné. Objekty Range nazývame rng a bunka. Jednu celočíselnú premennú nazývame cellWords, jednu celočíselnú premennú nazývame totalWords a jednu reťazcovú premennú nazývame obsah.

Dim rng As Range, cell As Range
Dim cellWords, totalWords as integer, content as String

2. Inicializujeme objekt Range rng s vybratým rozsahom a dvoma premennými typu Integer s hodnotou 0.

Nastaviť rng = výber
bunkové slová = 0
totalWords = 0

3. Chceme skontrolovať každú bunku v náhodne vybranom rozsahu (tento rozsah môže mať akúkoľvek veľkosť). V programe Excel VBA na to môžete použiť slučku For Every Next. Pridajte nasledujúce riadky kódu:

Pre každú bunku V rng
Ďalšia bunka

Poznámka: rng a bunka sa vyberajú náhodne, môžete použiť akékoľvek názvy. Na tieto názvy sa vo zvyšku kódu odvolávajte.

4. Ďalej určíme pre každú bunku v tomto rozsahu, koľko slov obsahuje. Ak chcete ignorovať bunku, ktorá obsahuje vzorec, pridajte nasledujúci riadok kódu medzi For Every a Next (iba ak cell.HasFormula je false, pokračujeme).

Ak nie je bunka.HasFormula Potom
Koniec Ak

5. Najprv napíšeme obsah bunky k variabilnému obsahu. Ďalej odstránime medzery na začiatku a na konci (ak existujú). V programe Excel VBA na to môžete použiť funkciu Orezať. Napríklad „excel vba“ bude skonvertovaný na „excel vba“. Do príkazu If pridajte nasledujúce riadky kódu.

obsah = bunka. Hodnota
content = Trim (obsah)

Poznámka: funkcia orezania v programe Excel VBA neodstraňuje medzery medzi slovami, ale v tomto prípade je to v poriadku.

6. V tomto mieste môže byť bunka prázdna. Ak je bunka prázdna, premennej cellWords priradíme hodnotu 0. Ak nie, obsahuje aspoň jedno slovo a premennej cellWords priradíme hodnotu 1. Do príkazu If pridajte nasledujúce riadky kódu.

If content = "" Then
bunkové slová = 0
Inak
bunkové slová = 1
Koniec Ak

Bunka môže obsahovať samozrejme viac ako jedno slovo. Presne to chceme teraz zistiť. Ako príklad uvádzame: „excel vba“. Ak bunka obsahuje v tejto fáze aspoň jedno miesto, obsahuje najmenej jedno ďalšie slovo. Na vyhľadanie medzery môžete použiť funkciu Instr v programe Excel VBA. Instr (content, "") nájde pozíciu prvého priestoru v obsahu.

7. Využijeme štruktúru Do While Loop. Kód umiestnený medzi tieto slová (v krokoch 8, 9 a 10) sa bude opakovať, pokiaľ je časť po Do While pravdivá. Tieto kroky chceme opakovať, pokiaľ je Instr (obsah, "")> 0 pravdivé (pokiaľ obsah obsahuje medzeru a teda viac slov). Pridajte do svojho príkazu If slučku Do While.

Vykonajte InStr (obsah, "")> 0
Slučka

8. Ďalej vezmeme časť obsahu začínajúcu na pozícii prvého priestoru. Na to používame funkciu Mid.

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

Napríklad: Mid („excel vba“, InStr („excel vba“, „“))) poskytne „vba“.

9. Znovu odstrihneme šnúru.

content = Trim (obsah)

Výsledok: „vba“

10. Zvýšime bunkové slová o 1.

cellWords = cellWords + 1

Táto slučka Do While sa bude opakovať, pokiaľ obsah obsahuje medzeru, a teda viac slov. V našom prípade opustíme slučku Do While, pretože „vba“ už neobsahuje medzery! Výsledok: táto bunka obsahuje 2 slová.

11. Po skontrolovaní jednej bunky pridáme do premennej totalWords text bunky. Tento riadok kódu by mal byť umiestnený mimo slučky Do While, ale v príkaze If.

totalWords = totalWords + cellWords

Celý proces sa začína znova pre ďalšiu bunku, kým nie sú začiarknuté všetky bunky.

12. Nakoniec zobrazíme hodnotu totalWords pomocou msgboxu. Tento riadok kódu by mal byť umiestnený mimo slučku For Every Next.

MsgBox celkomWords & „slová boli nájdené vo vybranom rozsahu“.

13. Otestujte program.

Výsledok:

Vám pomôže rozvoju miesta, zdieľať stránku s priateľmi

wave wave wave wave wave