Conta le parole in Excel VBA - Macro facili di Excel

Sommario

Di seguito vedremo un programma in Excel VBA Quello conta il numero di parole in un intervallo selezionato. Si presume che uno o più spazi separino le parole.

Situazione:

1. Innanzitutto, dichiariamo due oggetti Range e tre variabili. Chiamiamo gli oggetti Range rng e cell. Una variabile Integer che chiamiamo cellWords, una variabile Integer che chiamiamo totalWords e una variabile String che chiamiamo content.

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

2. Inizializziamo l'oggetto Range rng con l'intervallo selezionato e le due variabili di tipo Integer con valore 0.

Imposta rng = Selezione
cellWords = 0
totalWords = 0

3. Vogliamo controllare ogni cella in un intervallo selezionato casualmente (questo intervallo può essere di qualsiasi dimensione). In Excel VBA, puoi utilizzare il ciclo For Each Next per questo. Aggiungi le seguenti righe di codice:

Per ogni cella In rng
Cella successiva

Nota: rng e cella sono scelti a caso qui, puoi usare qualsiasi nome. Ricorda di fare riferimento a questi nomi nel resto del codice.

4. Successivamente, determiniamo per ogni cella in questo intervallo quante parole contiene. Per ignorare una cella che contiene una formula, aggiungi la seguente riga di codice tra For Each e Next (solo se cell.HasFormula è false, continuiamo).

If Not cell.HasFormula Then
Finisci se

5. Innanzitutto, scriviamo il contenuto della cella nella variabile contenuto. Successivamente, rimuoviamo gli spazi all'inizio e alla fine (se ce ne sono). In Excel VBA, puoi usare la funzione Taglia per questo. Ad esempio, " excel vba" verrà convertito in "excel vba". Aggiungi le seguenti righe di codice nell'istruzione If.

contenuto = cella.Valore
contenuto = Taglia (contenuto)

Nota: la funzione trim in Excel VBA non rimuove gli spazi extra tra le parole, ma in questo esempio va bene.

6. A questo punto, una cella può essere ancora vuota. Se la cella è vuota, assegniamo il valore 0 alla variabile cellWords. In caso contrario, contiene almeno una parola e assegniamo il valore 1 alla variabile cellWords. Aggiungi le seguenti righe di codice nell'istruzione If.

Se contenuto = "" Allora
cellWords = 0
Altro
cellWords = 1
Finisci se

Una cella può ovviamente contenere più di una parola. Questo è esattamente ciò che vogliamo scoprire ora. Come esempio prendiamo: "excel vba". Se una cella contiene almeno uno spazio in questa fase, contiene almeno un'altra parola. Puoi usare la funzione Instr in Excel VBA per cercare uno spazio. Instr(content, " ") trova la posizione del primo spazio nel contenuto.

7. Utilizzeremo la struttura Do While Loop. Il codice inserito tra queste parole (ai passaggi 8, 9 e 10) verrà ripetuto finché la parte dopo Do While è vera. Vogliamo ripetere questi passaggi finché Instr(content, " ") > 0 è vero (fintanto che il contenuto contiene uno spazio e quindi più parole). Aggiungi il ciclo Do While nella tua istruzione If.

Do While InStr(contenuto, " ") > 0
Ciclo continuo

8. Successivamente, prendiamo la parte di contenuto che inizia dalla posizione del primo spazio. Usiamo la funzione Mid per questo.

contenuto = Mid(contenuto, InStr(contenuto, " "))

Ad esempio: Mid("excel vba", InStr("excel vba", " ")) darà " vba".

9. Tagliamo di nuovo la corda.

contenuto = Taglia (contenuto)

Risultato: "vba"

10. Incrementiamo cellWords di 1.

cellWords = cellWords + 1

Questo ciclo Do While verrà ripetuto finché il contenuto contiene uno spazio e quindi più parole. Nel nostro esempio, usciamo dal ciclo Do While poiché "vba" non contiene più uno spazio! Risultato: questa cella contiene 2 parole.

11. Dopo aver selezionato una cella, aggiungiamo cellWords alla variabile totalWords. Questa riga di codice deve essere inserita all'esterno del ciclo Do While ma nell'istruzione If.

totalWords = totalWords + cellWords

L'intero processo ricomincia per la cella successiva fino a quando tutte le celle non sono state controllate.

12. Infine, mostriamo il valore di totalWords usando un msgbox. Questa riga di codice deve essere posizionata all'esterno del ciclo For Each Next.

MsgBox totalWords & " parole trovate nell'intervallo selezionato."

13. Testare il programma.

Risultato:

Aiuterete lo sviluppo del sito, condividere la pagina con i tuoi amici

wave wave wave wave wave