Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA - zählen, wenn Textteil in Text enthalten ist

VBA - zählen, wenn Textteil in Text enthalten ist
30.08.2018 11:06:13
RK
Aloha Community.
Ich möchte gern alle Zellen zählen die einen bestimmten Text enthalten.
Problem ist, dass nur gezählt wird, wenn genau der Text aus D1 in Spalte A steht.
Wie muss ich mein Makro modifizieren, damit alle Einträge, in denen mein Textausschnitt enthalten ist, zählen?
Ich bitte um Hilfe und vielen Dank im Voraus!
Eine kleine Excel-Datei mit dem Makro als Beispiel:
https://www.herber.de/bbs/user/123656.zip
Sub count()
Dim r As Range
Dim Z As Integer
Set ZRB = ThisWorkbook.Sheets(1)
Set r = Range(ZRB.Cells(1, 1), ZRB.Cells(50, 1))
Z = Application.WorksheetFunction.CountA(r)
For i = 0 To Z
Modeli = ZRB.Cells(1 + i, 1)
If Modeli = ZRB.Range("D1") Then Anz = Anz + 1
Next
ZRB.Range("D2") = Anz
End Sub

Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - zählen, wenn Textteil in Text enthalten ist
30.08.2018 11:42:15
UweD
Hallo
warum mit VBA?
in d2: =ZÄHLENWENN(A:A;"*"&D1&"*")
wenn doch, dann ohne Schleife
Sub count()
    Dim r As Range
    Dim ZRB
    
    Set ZRB = ThisWorkbook.Sheets(1)
    Set r = Range(ZRB.Cells(1, 1), ZRB.Cells(50, 1))
    
    ZRB.Range("D2") = Application.WorksheetFunction.CountIf(r, "*" & ZRB.Range("D1") & "*")

End Sub

LG UweD
Anzeige
AW: VBA - zählen, wenn Textteil in Text enthalten
30.08.2018 12:08:40
RK
Du hast recht, in diesem Beispiel kann die Schleife entfernt werden.
In meinem umfangreicheren Projekt muss ich allerdings jeden einzelnen Schritt auslesen.
Habe deine Idee für mein Beispiel umgemünzt.
Danke Dir!
Sub count_content()
Dim r As Range
Dim Z As Integer
Set ZRB = ThisWorkbook.Sheets(1)
Set r = Range(ZRB.Cells(1, 1), ZRB.Cells(50, 1))
Z = Application.WorksheetFunction.CountA(r)
For i = 0 To Z - 1
modeli = ZRB.Cells(1 + i, 1)
If modeli Like "*" & ZRB.Range("D1") & "*" Then Anz = Anz + 1
Next
ZRB.Range("D2") = Anz
End Sub

Anzeige
AW: VBA - zählen, wenn Textteil in Text enthalten
30.08.2018 12:47:15
Hans
Hallo
ich habe gerade einen faszinierend schönen Code für LastZell gesehen! Den kannte ich noch Nicht!
Z = Application.WorksheetFunction.CountA(r)

Sehr einfach, ohne End(xlUP). Ich erlaube mir dazu einen Hinweis:
Dieser Code wird einwandfrei funktionieren soplange es -keine Leerzeilen- in der Tabelle gibt.
Bei Leerzeilen stimmt Z nicht mehr mit der letzten Zelle überein! Wollte nur darauf hinweisen.
mfg Hans
Anzeige
AW: VBA - zählen, wenn Textteil in Text enthalten
30.08.2018 14:47:52
RK
Danke für deinen Hinweis.
Hast Du das schon überprüft?
Nimm dir mal meine angehangene Datei und schreibe in Spalte A (bis Zeile 50) weitere Werte hinein.
Er zählt nur die Zeilen in denen ein Eintrag verfasst wurde.
Nette Grüße
RK
AW: VBA - zählen, wenn Textteil in Text enthalten
30.08.2018 15:46:05
UweD
Hallo nochmal
Leere doch mal die ersten 10 Zellen.
Dann läuft dein Z nur bis 11 und liefert ein falsches Ergebnis
LG UweD
Anzeige
AW: VBA - zählen, wenn Textteil in Text enthalten
31.08.2018 15:24:36
RK
Stimmt. Wir haben ein wenig aneinander vorbei geschrieben.
Z richtet sich nach der Anzahl der Einträge.
Fehlen z.B. innerhalb zwei Einträge, werden bei einer Schleife nach Z folglich die zwei letzten Einträge nicht mehr abgefragt.
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Zählen von Zellen mit bestimmten Texten in Excel VBA


Schritt-für-Schritt-Anleitung

Um die Anzahl von Zellen zu zählen, die einen bestimmten Text enthalten, kannst Du den folgenden VBA-Code verwenden. Dieser Code nutzt die Application.WorksheetFunction.CountIf-Funktion, um die Zellen zu zählen, die den Text aus Zelle D1 in Spalte A enthalten.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul ein (Einfügen > Modul).

  3. Kopiere und füge den folgenden Code ein:

    Sub count_text()
       Dim ZRB As Worksheet
       Set ZRB = ThisWorkbook.Sheets(1)
       ZRB.Range("D2") = Application.WorksheetFunction.CountIf(ZRB.Range("A:A"), "*" & ZRB.Range("D1") & "*")
    End Sub
  4. Schließe den VBA-Editor und gehe zurück zu Excel.

  5. Führe das Makro count_text aus, um die Anzahl der Zellen zu zählen, die den Text aus D1 enthalten.


Häufige Fehler und Lösungen

  1. Leere Zellen in der Tabelle: Wenn Du leere Zellen in der Tabelle hast, kann dies dazu führen, dass das Ergebnis nicht korrekt ist. Stelle sicher, dass Du die Zellen, die Du zählen möchtest, richtig auswählst.

  2. Falscher Zellbereich: Überprüfe, ob der Zellbereich korrekt angegeben ist. Der Code zählt nur die Zellen in Spalte A.

  3. Falsche Textübereinstimmung: Wenn Du nur Zellen zählen möchtest, die genau den Text in D1 enthalten, musst Du die Wildcards (*) weglassen.


Alternative Methoden

Falls Du keinen VBA-Code verwenden möchtest, kannst Du auch die Excel-Funktion ZÄHLENWENN verwenden. Setze in Zelle D2 die folgende Formel ein:

=ZÄHLENWENN(A:A;"*"&D1&"*")

Diese Formel zählt ebenfalls alle Zellen in Spalte A, die den Text aus D1 enthalten, ohne dass Du VBA verwenden musst.


Praktische Beispiele

  • Zählen von Zellen mit spezifischem Text: Wenn Du alle Zellen zählen möchtest, die das Wort "Test" enthalten, setze "Test" in Zelle D1 und führe das Makro oder die Formel aus.

  • Zählen von Zellen mit variablen Texteingaben: Ändere einfach den Text in D1, um die Zählung für unterschiedliche Texte durchzuführen.


Tipps für Profis

  • Verwendung von ZÄHLENWENNS: Wenn Du mehrere Kriterien berücksichtigen möchtest, kannst Du die Funktion ZÄHLENWENNS verwenden. Damit kannst Du Zellen zählen, die mehreren Bedingungen entsprechen.

  • Optimierung der Performance: Wenn Du mit sehr großen Datenmengen arbeitest, kann es sinnvoll sein, die Berechnungseinstellungen auf "manuell" zu setzen, um die Performance zu verbessern.

  • Fehlerbehandlung im VBA: Integriere Fehlerbehandlung in Dein VBA-Skript, um mögliche Laufzeitfehler abzufangen und zu behandeln.


FAQ: Häufige Fragen

1. Wie kann ich in VBA zählen, wenn ein Text in einer Zelle enthalten ist?
Nutze die Like-Anweisung im VBA-Code, um die Zellen zu zählen, die einen bestimmten Text enthalten. Beispiel:

If modeli Like "*" & ZRB.Range("D1") & "*" Then Anz = Anz + 1

2. Kann ich die Zählung für mehrere Spalten durchführen?
Ja, Du kannst den Bereich in der CountIf-Funktion anpassen, um mehrere Spalten einzuschließen. Beispiel:

ZRB.Range("D2") = Application.WorksheetFunction.CountIf(ZRB.Range("A:B"), "*" & ZRB.Range("D1") & "*")

3. Was ist der Unterschied zwischen ZÄHLENWENN und ZÄHLENWENNS?
ZÄHLENWENN zählt Zellen, die einem einzigen Kriterium entsprechen. ZÄHLENWENNS hingegen ermöglicht das Zählen basierend auf mehreren Kriterien.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige