Skaitīt vārdus programmā Excel VBA - Vienkārši Excel makro

Satura rādītājs

Zemāk mēs apskatīsim programmu Excel VBA ka skaita vārdu skaitu izvēlētajā diapazonā. Tiek pieņemts, ka viena vai vairākas atstarpes atdala vārdus.

Situācija:

1. Pirmkārt, mēs deklarējam divus diapazona objektus un trīs mainīgos. Range objektus saucam par rng un cell. Vienu veselu skaitļu mainīgo mēs saucam par cellWords, vienu veselu skaitli - par totalWords un vienu virknes mainīgo mēs saucam par saturu.

Dim rng As Range, šūna As Range
Dim šūnu vārdi, totalWords kā vesels skaitlis, saturs kā virkne

2. Mēs inicializējam Range objektu rng ar atlasīto diapazonu un diviem Integer tipa mainīgajiem ar vērtību 0.

Set rng = Atlase
cellWords = 0
totalWords = 0

3. Mēs vēlamies pārbaudīt katru šūnu nejauši izvēlētā diapazonā (šis diapazons var būt jebkura izmēra). Programmā Excel VBA šim nolūkam varat izmantot cilpu Katram nākamajam. Pievienojiet šādas koda rindiņas:

Katrai šūnai In rng
Nākamā šūna

Piezīme: rng un šūna šeit tiek izvēlēti nejauši, varat izmantot jebkurus nosaukumus. Atcerieties atsaukties uz šiem nosaukumiem pārējā koda daļā.

4. Tālāk mēs nosakām katrai šī diapazona šūnai, cik vārdu tajā ir. Lai ignorētu šūnu, kurā ir formula, pievienojiet šādu koda rindiņu starp Katram un Nākamais (tikai tad, ja šūna. HasFormula ir nepatiesa, mēs turpinām).

Ja ne šūna.Vai ir Formula Tad
Beigas Ja

5. Pirmkārt, mēs ierakstām šūnas saturu uz mainīgo saturu. Tālāk mēs noņemam atstarpes sākumā un beigās (ja tādas ir). Programmā Excel VBA šim nolūkam varat izmantot apgriešanas funkciju. Piemēram, “excel vba” tiks pārveidots par “excel vba”. Ja paziņojumā pievienojat šādas koda rindiņas.

saturs = šūna. Vērtība
saturs = apgriezt (saturs)

Piezīme: apgriešanas funkcija programmā Excel VBA nenoņem papildu atstarpes starp vārdiem, taču šajā piemērā tas ir labi.

6. Šajā brīdī šūna joprojām var būt tukša. Ja šūna ir tukša, mēs piešķiram vērtību 0 mainīgajam cellWords. Ja nē, tajā ir vismaz viens vārds, un mēs piešķiram vērtību 1 mainīgajam cellWords. Ja paziņojumā pievienojat šādas koda rindiņas.

Ja saturs = "" Tad
cellWords = 0
Citādi
cellWords = 1
Beigas Ja

Protams, šūna var saturēt vairāk nekā vienu vārdu. Tieši to mēs tagad vēlamies noskaidrot. Kā piemēru ņemam: "excel vba". Ja šūnā šajā posmā ir vismaz viena atstarpe, tajā ir vēl vismaz viens vārds. Lai meklētu atstarpi, Excel VBA varat izmantot funkciju Instr. Instr (saturs, "") atrod satura pirmās vietas pozīciju.

7. Mēs izmantosim Do Do Loop struktūru. Kods, kas ievietots starp šiem vārdiem (8., 9. un 10. solī), tiks atkārtots, kamēr daļa pēc Do Do ir patiesa. Mēs vēlamies atkārtot šīs darbības tik ilgi, kamēr Instr (saturs, "")> 0 ir patiess (ja vien saturā ir atstarpe un līdz ar to vairāk vārdu). Savā paziņojumā pievienojiet cilni “Darīt”.

Dariet, kamēr InStr (saturs, "")> 0
Cilpa

8. Tālāk mēs ņemam satura daļu, sākot ar pirmās atstarpes pozīciju. Šim nolūkam mēs izmantojam funkciju Mid.

saturs = vidējs (saturs, InStr (saturs, ""))

Piemēram: Mid ("excel vba", InStr ("excel vba", "")) dos "vba".

9. Mēs atkal apgriežam virkni.

saturs = apgriezt (saturs)

Rezultāts: "vba"

10. Mēs palielinām šūnu vārdus par 1.

šūnu vārdi = šūnu vārdi + 1

Šī cilne “Do Do Loop” tiks atkārtota, kamēr saturs satur atstarpi un līdz ar to vairāk vārdu. Mūsu piemērā mēs izejam no darbības cikla, jo "vba" vairs nesatur atstarpi! Rezultāts: šajā šūnā ir 2 vārdi.

11. Pēc vienas šūnas pārbaudes mēs pievienojam cellWords mainīgajam totalWords. Šī koda rindiņa jāievieto ārpus cikla “Darīt”, bet paziņojumā “Ja”.

totalWords = totalWords + šūnu vārdi

Viss process sākas no jauna nākamajai šūnai, līdz visas šūnas ir pārbaudītas.

12. Visbeidzot, mēs parādām totalWords vērtību, izmantojot msgbox. Šī koda līnija jānovieto ārpus cilpas Par katru nākamo.

MsgBox totalWords & "atlasītajā diapazonā atrasti vārdi".

13. Pārbaudi programmu.

Rezultāts:

Jums palīdzēs attīstību vietā, daloties lapu ar draugiem

wave wave wave wave wave