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.