Wörter zählen in Excel VBA
Im Folgenden werden wir ein Programm in Excel VBA suchen, die die Anzahl der Wörter in einem ausgewählten Bereich zählt. Ein oder mehrere Leerzeichen werden zur Trennung von Worten angenommen.
Situation:
-
Zuerst erklären wir zwei Range-Objekte und drei Variablen. Wir rufen die Range-Objekte rng und Zelle. Eine Integer-Variable wir cellWords nennen, eine Integer-Variable, die wir totalWords nennen, und eine String-Variable wir Inhalte aufrufen.
Dim rng As Range, cell As Range Dim cellWords, totalWords As Integer, content As String
-
Wir initialisieren das Range-Objekt RNG mit dem ausgewählten Bereich und die beiden Variablen vom Typ Integer mit dem Wert 0
Set rng = Selection cellWords = 0 totalWords = 0
-
Wir wollen jede Zelle in einem zufällig ausgewählten Bereich überprüfen (dieser Bereich kann beliebig groß sein). In Excel VBA können Sie die For Each Next-Schleife für diese. Fügen Sie die folgenden Codezeilen:
For Each cell In rng Next cell
Hinweis: RNG und Zelle sind hier zufällig ausgewählt, können Sie alle Namen verwenden.
Denken Sie daran, diese Namen in dem Rest des Codes zu beziehen.
-
Als nächstes bestimmen wir für jede Zelle in diesem Bereich, wie viele Wörter sie enthält. Um eine Zelle zu ignorieren, die eine Formel enthält, fügen Sie die folgende Codezeile zwischen For Each und Next (nur wenn cell.HasFormula falsch ist, dass wir auch weiterhin).
If Not cell.HasFormula Then End If
-
Zuerst schreiben wir den Inhalt der Zelle an den variablen Inhalten.
Als nächst wir die Leerzeichen am Anfang entfernen und das Ende (falls vorhanden). In Excel VBA können Sie die Trim-Funktion für diese. Zum Beispiel: „Excel VBA“ wird zu „Excel VBA“ umgewandelt werden. Fügen Sie die folgenden Codezeilen in Ihrer If-Anweisung.
content = cell.Value content = Trim(content)
Hinweis: Die Trimm-Funktion in Excel VBA nicht entfernt zusätzliche Leerzeichen zwischen den Wörtern, aber das ist in Ordnung in diesem Beispiel.
-
An dieser Stelle kann eine Zelle noch leer sein. Wenn die Zelle leer ist, weisen wir den Wert 0 an die Variable cellWords. Wenn nicht, dann enthält sie mindestens ein Wort und ordnen wir den Wert 1 an die variable cellWords. Fügen Sie die folgenden Codezeilen in Ihrer If-Anweisung.
If content = "" Then cellWords = 0 Else cellWords = 1 End If
Eine Zelle kann mehr als ein Wort natürlich enthalten. Das ist genau das, was wir jetzt herausfinden wollen. Als Beispiel nehmen wir: „Excel VBA“. Wenn eine Zelle mindestens einen Raum in dieser Phase enthält, enthält sie mindestens ein weiteres Wort. Sie können für einen Raum der Instr-Funktion in Excel VBA zu sehen verwenden.
Instr (Gehalt, „„) fest, um die Position des ersten Raumes im Inhalt.
-
Wir werden die Verwendung der Do While-Schleife Struktur machen. Code platziert zwischen diesen Worten (in Schritt 8, 9 und 10) wird, solange das Teil nach dem Do wiederholt werden, während der Fall ist. Wir wollen diese Schritte solange Instr wiederholen (Inhalt, „„)> 0 gilt (solange Inhalt ein Leerzeichen enthält und mehr Wörter so). Fügen Sie die Do While-Schleife in der If-Anweisung.
Do While InStr(content, " ") > 0 Loop
-
Als nächstes nehmen wir den Teil des Inhalts Ausgangs an der Position des ersten Raumes. Wir verwenden die Mid-Funktion dafür.
content = Mid(content, InStr(content, " "))
Zum Beispiel: Mid ( „Excel VBA“, InStr ( „Excel VBA“, “ „)) geben“ vba“.
-
Wir trimmen wieder die Zeichenfolge.
content = Trim(content)
Ergebnis: „vba“
-
Wir Zuwachs cellWords um 1
cellWords = cellWords + 1
Dieser Do While-Schleife wird so lange wiederholt werden, wie Inhalte einen Raum und damit mehr Worte enthalten. In unserem Beispiel verlassen wir den Do While-Schleife, da „vba“ mehr einen Raum nicht enthalten! Ergebnis: Diese Zelle 2 Wörter enthält.
-
Nach einer Zelle vergewissert haben, fügen wir cellWords zu den variablen totalWords. Dieser Code Zeile sollte außerhalb des Do While-Schleife, sondern in der If-Anweisung platziert werden.
totalWords = totalWords + cellWords
Der gesamte Prozess beginnt erneut für die nächste Zelle, bis alle Zellen überprüft wurden.
-
Schließlich zeigen wir den Wert von totalWords einen msgbox verwenden. Diese Codezeile sollte außerhalb der For Each Next-Schleife platziert werden.
MsgBox totalWords & " words found in the selected range."
-
Testen Sie das Programm.
Ergebnis: