Wörter in einem Bereich zählen mit VBA
Schritt-für-Schritt-Anleitung
Um die Anzahl der Wörter in einem bestimmten Bereich in Excel zu zählen, kannst Du den folgenden VBA-Code verwenden. Dieser Code wurde aus einem Forumthread abgeleitet und angepasst, um die Funktionalität auf mehrere Spalten auszudehnen.
- Öffne Excel und drücke
ALT + F11
, um den VBA-Editor zu öffnen.
- Klicke auf
Einfügen
und wähle Modul
, um ein neues Modul zu erstellen.
- Kopiere den folgenden Code in das Modul:
Sub Wörterzählen()
Dim dicAlle As Object
Dim arrVarAlleZellen() As Variant
Dim arrVarEinzelzelle As Variant
Dim lngLZ As Long, i As Long, j As Long
Dim Bereich As Range, Zelle As Range
Dim Spalte1 As Long, Spalte2 As Long, Zeile1 As Long
'Bereich mit zu zählenden Wörtern
Spalte1 = 1 '1. Spalte - Spalte A
Spalte2 = 4 'letzte Spalte - Spalte D
Zeile1 = 1 ' 1. Zeile des Datenbereichs
'letzte Zeile in den Spalten
For i = Spalte1 To Spalte2
lngLZ = Application.WorksheetFunction.Max(lngLZ, Cells(Rows.Count, i).End(xlUp).Row)
Next i
Set Bereich = Range(Cells(Zeile1, Spalte1), Cells(lngLZ, Spalte2))
'Texte einlesen
Set dicAlle = CreateObject("Scripting.Dictionary")
For Each Zelle In Bereich
If Not IsEmpty(Zelle) Then
arrVarEinzelzelle = Split(Textsäubern(Zelle.Text))
For j = 0 To UBound(arrVarEinzelzelle, 1)
dicAlle(arrVarEinzelzelle(j)) = dicAlle(arrVarEinzelzelle(j)) + 1
Next j
End If
Next Zelle
'Ausgabe der Ergebnisse
Range("f:g").ClearContents
Range(Cells(1, 6), Cells(dicAlle.Count, 6)) = WorksheetFunction.Transpose(dicAlle.keys)
Range(Cells(1, 7), Cells(dicAlle.Count, 7)) = WorksheetFunction.Transpose(dicAlle.items)
End Sub
Function Textsäubern(ByVal strÜbergabe As String) As String
strÜbergabe = Replace(strÜbergabe, Chr(13), " ")
strÜbergabe = Replace(strÜbergabe, Chr(10), " ")
strÜbergabe = Replace(strÜbergabe, "(", " ")
strÜbergabe = Replace(strÜbergabe, ")", " ")
strÜbergabe = Replace(strÜbergabe, ",", " ")
strÜbergabe = Replace(strÜbergabe, ".", " ")
strÜbergabe = Replace(strÜbergabe, ";", " ")
Do Until InStr(1, strÜbergabe, " ") = 0
strÜbergabe = Replace(strÜbergabe, " ", " ")
Loop
Textsäubern = Trim(LCase(strÜbergabe))
End Function
- Schließe den VBA-Editor und kehre zu Excel zurück.
- Führe das Makro
Wörterzählen
aus, um die Wörter in dem angegebenen Bereich zu zählen.
Häufige Fehler und Lösungen
-
Fehler: "Kompatibilitätsproblem"
Stelle sicher, dass Du eine unterstützte Excel-Version verwendest (ab Excel 2010).
-
Fehler: "Ausgabe in falschen Zellen"
Überprüfe die Definition des Bereichs und die Zellen, in die die Ergebnisse geschrieben werden.
-
Fehler: "Makros sind deaktiviert"
Aktiviere Makros in den Excel-Optionen, um das Skript auszuführen.
Alternative Methoden
Falls Du VBA nicht verwenden möchtest, kannst Du auch Excel-Formeln in Kombination mit Hilfsspalten nutzen, um die Anzahl der Wörter zu zählen. Eine einfache Methode ist die Verwendung der Funktion ANZAHL
, um die Wörter in einer Zelle zu zählen, jedoch ist dies weniger flexibel als das oben genannte VBA-Skript.
Praktische Beispiele
-
Beispiel 1: Zähle die Wörter in den Zellen A1:D10.
Der oben gezeigte Code zählt alle Wörter in diesem Bereich und schreibt die Ergebnisse in die Spalten F und G.
-
Beispiel 2: Ändere den Bereich auf A1:C20.
Ändere die Werte für Spalte1
, Spalte2
und Zeile1
im VBA-Code.
Tipps für Profis
- Nutze
Dictionary
-Objekte, um die Wörter effizient zu zählen, da sie eine schnellere Zugriffsgeschwindigkeit bieten.
- Erweitere die
Textsäubern
-Funktion für zusätzliche Zeichen, die Du möglicherweise entfernen möchtest.
- Speichere Deine Arbeitsmappe als
xlsm
, um die Makros zu behalten.
FAQ: Häufige Fragen
1. Kann ich den Code für andere Bereiche anpassen?
Ja, ändere einfach die Werte für Spalte1
, Spalte2
und Zeile1
im Code.
2. Funktioniert dieser Code auch in Excel Online?
Leider funktioniert VBA nicht in Excel Online. Du musst die Desktop-Version verwenden.