Il conteggio delle parole in Excel VBA
Di seguito vedremo un programma in Excel VBA che conta il numero di parole in un intervallo selezionato. Uno o più spazi si presume per separare le parole.
Situazione:
-
In primo luogo, dichiarare due oggetti Range e tre variabili. Chiamiamo la gamma di oggetti RNG e delle cellule. Una variabile intera che noi chiamiamo cellWords, una variabile Integer che chiamiamo totalWords, e una variabile String che chiamiamo contenuti.
Dim rng As Range, cell As Range Dim cellWords, totalWords As Integer, content As String
-
inizializzare il RNG oggetto Range con l’intervallo selezionato e le due variabili di tipo Integer con valore 0.
Set rng = Selection cellWords = 0 totalWords = 0
-
vogliamo controllare ogni cella in un intervallo selezionato casualmente (questo intervallo può essere di qualsiasi dimensione). In Excel VBA, è possibile utilizzare il ciclo For Each di questo componente. Aggiungere le seguenti righe di codice:
For Each cell In rng Next cell
Nota: RNG e cellule sono scelti a caso qui, è possibile utilizzare qualsiasi nome.
Ricordarsi di fare riferimento a questi nomi nel resto del codice.
-
Successivamente, determiniamo per ogni cella in questa fascia di quante parole che contiene. Per ignorare una cella che contiene una formula, aggiungere la seguente riga di codice tra For Each e Next (solo se è falso cell.HasFormula continuiamo).
If Not cell.HasFormula Then End If
-
In primo luogo, abbiamo scrivere il contenuto della cella al contenuto variabile.
Successivamente, abbiamo rimuovere gli spazi all’inizio e alla fine (se ce ne sono). In Excel VBA, è possibile utilizzare la funzione Trim per questo. Ad esempio, “di Excel VBA” verrà convertito in “di Excel VBA”. Aggiungere le seguenti righe di codice nel vostro If.
content = cell.Value content = Trim(content)
Nota: la funzione trim in Excel VBA non rimuovere gli spazi aggiuntivi tra le parole, ma va bene in questo esempio.
-
A questo punto, una cella può essere ancora vuota. Se la cella è vuota, si assegna il valore 0 per le cellWords variabili. Altrimenti, contiene almeno una parola e si assegna il valore 1 al cellWords variabili. Aggiungere le seguenti righe di codice nel vostro If.
If content = "" Then cellWords = 0 Else cellWords = 1 End If
Una cella può contenere più di una parola, naturalmente. Questo è esattamente quello che vogliamo sapere ora. Come esempio prendiamo: “VBA di Excel”. Se una cella contiene almeno uno spazio in questa fase, che contiene almeno una parola in più. È possibile utilizzare la funzione Instr in Excel VBA per cercare uno spazio.
Instr (contenuto, ” “) rileva la posizione del primo spazio contenuto.
-
Faremo uso del ciclo Do While struttura. Codice collocato tra queste parole (al punto 8, 9 e 10) si ripeterà finché la parte dopo Do Mentre è vero. Vogliamo ripetere la procedura finché Instr (contenuto, ” “)> 0 è vero (a patto che il contenuto contiene uno spazio e quindi più parole). Aggiungere il ciclo Do While nella sua dichiarazione If.
Do While InStr(content, " ") > 0 Loop
-
Successivamente, prendiamo la parte iniziale contenuto nella posizione del primo spazio. Usiamo la funzione Mid per questo.
content = Mid(content, InStr(content, " "))
Per esempio: Mid ( “di Excel VBA”, InStr ( “di Excel VBA”, ” “)) darà” VBA”.
-
Noi pareggiamo di nuovo la stringa.
content = Trim(content)
Risultato: “VBA”
-
cellWords viene incrementato di 1.
cellWords = cellWords + 1
Questo ciclo Do While sarà ripetuto finché il contenuto contiene uno spazio e quindi più parole. Nel nostro esempio, si esce dal ciclo Do While dal “VBA” non contiene più spazio! Risultato: questa cella contiene 2 parole.
-
Dopo aver verificato una cella, aggiungiamo cellWords alle totalWords variabili. Questa linea di codice deve essere inserito al di fuori del ciclo Do While ma nel If.
totalWords = totalWords + cellWords
L’intero processo riparte per la cella successiva fino a quando tutte le celle sono stati controllati.
-
Infine, visualizzare il valore di totalWords usando un msgbox. Questa linea codice deve essere posizionato all’esterno del ciclo For Each successivo.
MsgBox totalWords & " words found in the selected range."
-
Test del programma.
Risultato: