If-Statement mit Platzhalter & Like-Operator (VBA)

Bei einer Suche - beispielsweise auf Google - kann mit Platzhaltern gearbeitet werden. Das Fragezeichen (?) ersetzt dabei ein einzelnes Zeichen, das Sternchen (*) ist ein Platzhalter/eine Wildcard für eine beliebige Zeichenfolge vor, innerhalb oder nach dem Suchbegriff. Verwendet man in VBA ein If-Statement, können ebenfalls solche Platzhalter zur Anwendung gebracht werden. Nehmen wir an, basierend auf einem User-Input im Format "Qx-JAHR" (bspw. Q2-2019) soll eine bestimmte Prozedur für eben dieses Quartal gesteuert werden. Normalerweise ist ein If-Statement oder besser gesagt ein If-Then-Else-Statement wie folgt aufgebaut:

If MeinBegriff = "Q2-2019" Then
Weiterer Code für diesen Fall

ElseIf Weitere Prüfungen
Weiterer Code

End If

Im obigen Fall wird Bei "MeinBegriff" handelt es sich um eine Variable, die vorhin in der Prozedur initialisiert wird. Sie kann das Resultat eines User-Inputs sein oder sich auf einen bestimmten Zellwert beziehen. Generell gilt jedoch: Da sich die Jahreszahl über die Dauer verändern wird, benötigen wir eine dynamische Variante mit Platzhaltern im Format "Q2-20*". Das Gleichheitszeichen (=) wird Operator genannt. Weitere Möglichkeiten sind "<>", ">" oder "<=" etc. Desweiteren gibt es den "Like"-Operator, den wir in diesem Fall verwenden.

Der Code für ein If-Statement mit "Like-Operator" lautet:

If MeinBegriff Like "Q1-20*" Then
Weiterer Code für diesen Fall

ElseIf MeinBegriff Like "Q2-20*" Then
Weiterer Code für diesen Fall

ElseIf MeinBegriff Like "Q3-20*" Then
Weiterer Code für diesen Fall

ElseIf MeinBegriff Like "Q4-20*" Then
Weiterer Code für diesen Fall

End If

Wenn der Wert der Variable "MeinBegriff" also ähnlich (like) ist, wird der entsprechende Fall ausgeübt.

Die Formel "SUCHEN" - nach Fragezeichen/Multiplikationszeichen suchen

Die Formel "=SUCHEN" ermöglicht die Suche nach einem bestimmten Zeichen oder einer Zeichenfolge innerhalb eines anderen Textes/einer anderen Zelle. Kombiniert mit beispielsweise der Formel "=TEIL" können so clever Textfragmente aus einer Zelle gezogen werden. Bei Platzhalter wie dem Fragezeichen und dem Multiplikationszeichen (*) funktioniert dies jedoch nicht auf anhin. Hier ein Beispiel mit der Formel "=SUCHEN("*";A1)":

suchenachplatzhalter1

Da es sich beim "*" wie erwähnt um einen Platzhalter handelt, wird ein beliebiges Zeichen bereits an erster Stelle im Text in Zelle "A1" gefunden - das Resultat der Formel ist demnach "1". Die Formel muss deshalb leicht angepasst werden: Es benötigt vor dem Platzhalter-Zeichen eine Tilde ("~"), um zu definieren, dass nach exakt diesem Zeichen gesucht werden soll. Die korrekte Formel lautet demzufolge:

=SUCHEN("~*";A1)

Das Resultat sieht nun wie folgt aus (das Zeichen steht an 11. Stelle im Text in Zelle A1):

suchenachplatzhalter2

Dieses Vorgehen deckt sich auch mit der herkömmlichen Suchfunktion in den Office-Programmen ("CTRL + F"), was im Beitrag "Suchen & Ersetzen eines Multiplikationszeichens/Platzhalters (*)" genauer aufgezeigt wird.

Suchen & Ersetzen eines Multiplikationszeichens/Platzhalters (*)

Suchen & Ersetzen (CTRL + H) ist eine tolle Funktion, um innert kürzester Zeit beliebig viele Formeln und Werte anzupassen. Schauen wir uns fürs Verständnis diese eine Beispielformel an:

=A2*'C:\Dokumente\Währungen\[Währungskurse.xlsx]August'!$B$2

Aus einer externen Datei werden Währungskurse gezogen und bestimmte Werte mittels Multiplikation umgerechnet. Der Monat "August" kann nun simpel durch "September" ersetzt werden - so sind direkt alle Deine Bezüge auf den neuen Monat angepasst:

monatersetzen

Beachte: Ist nur eine einzelne Zelle selektiert, wird im gesamten Tabellenblatt gesucht und ersetzt! Selektiere also stets einen Bereich, um sicherzugehen, dass keine unerwünschten Angaben verändert werden!

Gehen wir nun jedoch davon aus, dass Du Multiplikationszeichen in Deiner Formel verwendest und auch diese ersetzen möchtest. Als Beispiel: Du multiplizierst alle Deine Werte mit 1'000 (*1000) und möchtest dies fortan nicht länger tun. Das Sternchen (*) wird dient auch als allgemeiner Platzhalter und der vorangehende Teil Deiner Formeln würde deshalb ebenfalls ersetzt werden. Excel benötigt eine exakte Eingabe - dass wir eben auch das Sonderzeichen (*) ersetzen wollen! Dies funktioniert, indem Du eine Tilde (~) vor Dein *1000 setzt. Ersetzen tun' wir diesen Wert durch nichts (den Bereich "Ersetzen durch:" einfach leer lassen):

suchenachtilde