Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: bestimmte Zeichen in String zählen

bestimmte Zeichen in String zählen
Armin
Hallo,
ich habe folgende Frage.
In einer Zelle steht ein Text. Bspw. "ich bin ein igel".
Gibt es eine Lösung, um alle i zu zählen? In diesem Beispiel sollte die Lösung 4 lauten.
Vielen Dank für euere Tipps.
Armin
Anzeige
AW: bestimmte Zeichen in String zählen
20.07.2009 15:40:04
Armin
Hallo,
sorry, ich habe vergessen zu erwähnen, dass ich eine vba-Lösung benötige.
Viele Grüße
Armin
Anzeige
AW: bestimmte Zeichen in String zählen
20.07.2009 15:44:44
David
Hallo Armin,
das geht z. Bsp. so:
Option Explicit Sub count() Dim lang, i, letter, no lang = Len(Range("A1")) For i = 1 To lang letter = Mid$(Range("a1"), i, 1) If letter = "i" Then no = no + 1 Next MsgBox no & " mal i" End Sub
Mehr Flexibilität nur unter Kenntnis deiner Tabelle.
Gruß
David
Anzeige
AW: bestimmte Zeichen in String zählen
20.07.2009 15:48:28
UweD
Hallo nochmal
so...


Sub Zählen_i()
    Dim Txt$, Was$, ANZ%
    Txt = "Ich bin ein Igel"
    Was = "i"
    ANZ = Len(Txt) - Len(Replace(Txt, Was, "")) ' genaues vergleichen
    MsgBox ANZ
    ANZ = Len(Txt) - Len(Replace(UCase(Txt), UCase(Was), "")) ' Groß klein egal
    MsgBox ANZ
End Sub


Gruß UweD
Anzeige
AW: bestimmte Zeichen in String zählen
20.07.2009 15:49:29
Armin
Super, vielen Dank
das war´s
AW: bestimmte Zeichen in String zählen
20.07.2009 15:40:38
UweD
Hallo
 
 ABC
1ich bin ein igel 4
Formeln der Tabelle
C1 : =LÄNGE(A1)-LÄNGE(WECHSELN(A1;"i";""))
 

Gruß UweD
Anzeige
Mit der Kanone auf den Spatz !
20.07.2009 15:46:43
ransi
Hallo
Versuch mal sowas:
Diesen Code in ein Modul:
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit


Public Function machs(Zelle, Buchstabe)
Dim regex As Object
Set regex = CreateObject("Vbscript.Regexp")
With regex
    .Pattern = Buchstabe
    .ignorecase = True
    .Global = True
    machs = .Execute(Zelle.Text).Count
End With
End Function


Der Aufruf geht dann so:
Tabelle1

 AB
1ich bin ein igel4

Formeln der Tabelle
ZelleFormel
B1=machs(A1;"i")


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
ransi
Anzeige
AW: Mit der Kanone auf den Spatz !
20.07.2009 15:49:55
Adelhorst
Hallo Ransi.
Was spricht gegen folgende Lösung?
Option Explicit Public Function AnzahlZeichen(TextZelle As Range, SuchString As String) Dim i With TextZelle.Cells(1, 1) AnzahlZeichen = 0 For i = 1 To Len(.Text) If Mid(.Text, i, 1) = SuchString Then _ AnzahlZeichen = AnzahlZeichen + 1 Next i End With End Function Hat deine Lösung einen Vorteil gegenüber dieser?
Gruss Adelhorst
Anzeige
AW: Mit der Kanone auf den Spatz !
20.07.2009 15:59:41
ransi
Hallo Adelhorst
Wenn du so fragst:
Das Regex kommt ohne Schleife und ohne If-Abfrage aus.
Aber ob das bei so einer kleinen Abfrage ein Vorteil ist...?
Wenn ich IgnoreCase auf false stelle wird auch nach GROSS -klein Schreibung unterschieden.
Ausserdem funktioniert es auch mit einem kompletten Suchstring.
Das ist ein klarer Vorteil ;-)
Da letztere kannst du in deinem Code auch ganz schnell implementieren:
Public Function AnzahlZeichen(TextZelle As Range, SuchString As String)
Dim i
With TextZelle.Cells(1, 1)
    AnzahlZeichen = 0
    For i = 1 To Len(.Text)
        If Mid(.Text, i, Len(SuchString)) = SuchString Then _
            AnzahlZeichen = AnzahlZeichen + 1
    Next i
End With
End Function

ransi
Anzeige
AW: Mit der Kanone auf den Spatz !
20.07.2009 16:13:49
Adelhorst
Hallo ransi.
Danke für Info
Gruss Adelhorst
Aha, mit VBS-Nutzung! Interessant,...
21.07.2009 02:54:47
Luc:-?
...Ransi,
aber ich vermisse am Schluss Set regex = Nothing, oder ist das dann quasi von "allein" so... ;-)
Gruß Luc :-?
AW: Aha, mit VBS-Nutzung! Interessant,...
21.07.2009 09:32:54
Tino
Hallo,
ich denke wenn dies nicht als Globale Variable Deklariert ist, kann man es machen muss aber nicht.
In der Regel wird das Objekt nach dem Verlassen der Prozedur sowieso auf Nothing gesetzt.
Gruß Tino
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Bestimmte Zeichen in einem String zählen mit VBA


Schritt-für-Schritt-Anleitung

Um die Anzahl bestimmter Zeichen in einer Zelle mit VBA zu zählen, kannst du die folgende Vorgehensweise nutzen:

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

  2. Klicke auf Einfügen und wähle Modul, um ein neues Modul zu erstellen.

  3. Füge den folgenden VBA-Code in das Modul ein:

    Option Explicit
    Sub count()
       Dim lang As Long, i As Long, letter As String, no As Long
       lang = Len(Range("A1"))
       For i = 1 To lang
           letter = Mid$(Range("A1"), i, 1)
           If letter = "i" Then no = no + 1
       Next
       MsgBox no & " mal i"
    End Sub
  4. Schließe den VBA-Editor und kehre zu Excel zurück.

  5. Gib in Zelle A1 einen Text ein, z.B. "ich bin ein igel".

  6. Führe das Makro count aus, um die Anzahl der Buchstaben i zu zählen.


Häufige Fehler und Lösungen

  • Fehler: "Der Makro kann nicht ausgeführt werden."

    • Lösung: Stelle sicher, dass die Makros in deiner Excel-Datei aktiviert sind. Gehe zu Datei > Optionen > Sicherheitscenter > Einstellungen für das Sicherheitscenter > Makroeinstellungen und aktiviere die entsprechenden Optionen.
  • Fehler: Das Ergebnis ist nicht wie erwartet.

    • Lösung: Überprüfe, ob der gesuchte Buchstabe im Code korrekt angegeben ist. Beispiel: If letter = "i" Then.

Alternative Methoden

Du kannst auch eine Funktion erstellen, um die Anzahl der Zeichen in einem String zu zählen. Hier ist ein Beispiel:

Public Function AnzahlZeichen(TextZelle As Range, SuchString As String) As Long
    Dim i As Long
    With TextZelle.Cells(1, 1)
        AnzahlZeichen = 0
        For i = 1 To Len(.Text)
            If Mid(.Text, i, 1) = SuchString Then AnzahlZeichen = AnzahlZeichen + 1
        Next i
    End With
End Function

Diese Funktion kannst du in einer Zelle verwenden, indem du z.B. =AnzahlZeichen(A1, "i") eingibst.


Praktische Beispiele

  1. Anzahl der Buchstaben zählen: Um die Anzahl der Buchstaben i in "Ich bin ein Igel" zu zählen, kannst du die Funktion AnzahlZeichen verwenden.
  2. Mehrere Zeichen zählen: Wenn du die Anzahl von mehreren Zeichen zählen möchtest, kannst du eine Schleife oder eine Regex-Implementierung verwenden, um eine Vielzahl von Zeichen in einem String zu zählen.

Tipps für Profis

  • Nutze die Replace-Funktion, um die Anzahl bestimmter Zeichen schnell zu berechnen:

    ANZ = Len(Txt) - Len(Replace(Txt, Was, ""))
  • Verwende UCase oder LCase, um die Groß- und Kleinschreibung zu ignorieren:

    ANZ = Len(UCase(Txt)) - Len(Replace(UCase(Txt), UCase(Was), ""))

FAQ: Häufige Fragen

1. Wie zähle ich Leerzeichen in einer Zelle?
Du kannst die gleiche Technik verwenden, indem du das SuchString einfach auf ein Leerzeichen änderst: =AnzahlZeichen(A1, " ").

2. Wie viele Zeichen sind in einer Zelle?
Verwende die Funktion =LÄNGE(A1), um die Anzahl der Zeichen in der Zelle A1 zu ermitteln.

3. Gibt es eine Funktion, um alle Buchstaben in einem Text zu zählen?
Ja, du kannst eine Schleife erstellen, die durch jeden Buchstaben iteriert und die Anzahl in einer Variablen speichert.

4. Wie kann ich eine Regex verwenden, um bestimmte Zeichen zu zählen?
Hier ist ein einfaches Beispiel mit Regex:

Public Function machs(Zelle As Range, Buchstabe As String) As Long
    Dim regex As Object
    Set regex = CreateObject("Vbscript.RegExp")
    With regex
        .Pattern = Buchstabe
        .IgnoreCase = True
        .Global = True
        machs = .Execute(Zelle.Text).Count
    End With
End Function

Verwende =machs(A1, "i"), um die Anzahl der i zu zählen.

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