Zählen eines bestimmten Zeichens innerhalb einer Zelle

Mit den Formeln "ANZAHL" und "ZÄHLENWENN" lässt sich die Anzahl bestimmter Werte über mehrere Zellen hinweg ermitteln. Möchte man jedoch ein bestimmtes Zeichen innerhalb einer einzelnen Zelle zählen, benötigt das eine etwas andere Kombination von Formeln. Angenommen in Zelle "A1" steht unser Text:

ZaehlenTextfolge1

Wir möchten nun zählen, wie oft das Zeichen "e" darin vorkommt. Im untenaufgeführten Bildausschnitt wird dazu eine Hilfszelle (D1) verwendet. Die effektive Formel wird in der Zelle "D2" angewendet und ergibt im Falle des Textes "Alles Gute im Jahr 2018!" zwei. Die Formel lautet wie folgt:

=LÄNGE(A1)-LÄNGE(WECHSELN(A1;D1;""))

ZaehlenTextfolge2

Die oben genannte Formel macht folgendes: Sie zählt einerseits die Länge (Anzahl Zeichen) im Text. Mit dem Teil "WECHSELN(...)" wird innerhalb des Textes jedes "e" durch nichts ("") ersetzt und erneut die Länge (Anzahl Zeichen ohne "e") ermittelt. Die Differenz daraus ergibt demnach die Anzahl "e" innerhalb der Textfolge.

Alternativ könnte anstatt einer Hilfszelle (D1) auch einfach ein Wert eingegeben werden. Möchte man beispielsweise die Leerzeichen zählen (=4), wendet man folgende Formel an:

=LÄNGE(A1)-LÄNGE(WECHSELN(A1;" ";""))

D1 wurde hier durch " " ersetzt.

GoTo VBA-Befehl

Mittels dem VBA-Befehl "GoTo" kann in einen beliebigen Bereich des Codes gesprungen werden. Dieser Beitrag zeigt ein Beispiel auf, wie dies funktioniert.

An einer Stelle im Code erfolgt der Befehl "GoTo Zielbereich" und an einem beliebigen anderen Ort steht "Zielbereich:" gefolgt von den entsprechend auszuführenden Befehlen:

Sub MeinGoToMakro()
...
GoTo Zielbereich
...
Zielbereich:
Hier auszuführender Code
...
End Sub

Schauen wir uns ein konkretes Beispiel an: Angenommen das Programm soll zwei mögliche Prozeduren vornehmen - entweder die Befehle in Sektion1 oder diejenigen in Sektion2. Je nach dem, welcher Zelleninhalt in "B1" ist, soll Sektion1 oder Sektion2 ausgeführt werden. In diesem Fall wird das Programm einfach die entsprechende Sektion mit ".Select" auswählen. Meine Exceltabelle sieht wie folgt aus:

GoToSheet

Und der vollständige Code in VBA dazu lautet:

Sub GoToMacro()

If Range("B1") = 1 Then
Range("A5").Select
GoTo Ende
Else: GoTo Sektion2
End If

Sektion2:
Range("A9").Select

Ende:
End Sub

Es gibt zwei Aspekte, die ich genauer hervorheben möchte: Der Doppelpunkt hinter der jeweiligen Sektion ("Sektion2:" und "Ende:") ist zwingend notwendig. Zudem ist der Sprung zu eben diesem "Ende:" in unserem obigen Programm wichtig, damit die Befehle in Sektion2 im Falle von B1 = 1 gar nicht erst ausgeführt werden. Da ganze Teile im Code je nach Szenario übersprungen werden, wird die Ausführungszeit des Makros im Generellen beschleunigt.