Excel VBA Wenn Wert in Zelle dann

Excel erkennt automatisch, wenn der Anwender eine Zelle verändert. So können alle oder bestimmte Zellen beliebig per VBA überwacht werden.

Das folgende Makro wird beispielsweise ausgeführt, wenn in der Zelle A1 bzw. C1 Änderungen vorgenommen werden. Mit der Abfrage des Target-Befehls können einzelne Zell-Adressen einfach überprüft werden. Sollen hingegen mehrere Zellen oder ganze Zellbereiche überwacht werden, so ist das unten stehende Beispiel (Lösung 2) mit dem Befehl Intersect die bessere Lösung.

Lösung 2: Überwachung von Zellbereichen mit Hilfe des Befehls Intersect:

Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Address = "$A$1" Or Target.Address = "$C$1" Then
MsgBox "Sie haben gerade Zelle A1 oder C1 verändert!"
End If
End Sub


Lösung 2: Überwachung von Zellbereichen mit Hilfe des Befehls Intersect:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("A1:A3")) Is Nothing Then
MsgBox "Im Bereich A1:A3 wurde eine Zelle geändert!"
End If
End Sub

Mit diesem Makro ist es also möglich, den Bereich auf mehrere Zellen auszuweiten. Im oben stehende Makro wird die Aktion ausgeführt, wenn Änderungen in den Zellen A1, A2 oder A3 vorgenommen werden.

Die beiden Makros müssen in dem betreffenden Tabellenblatt eingefügt werden. Nicht in einem Modul.

Excel VBA Wenn Wert in Zelle dann

Drucken E-Mail

Überblick

Um zu prüfen, ob eine Zelle einen bestimmten Text oder eine Zahl enthält, benötigen wir folgende Funktionen SUCHEN,  ISTZAHL und WENN. Wenn die Groß- und Kleinschreibung geachtet werden soll, nutzen wir FINDEN anstatt SUCHEN.

Formel

=WENN(ISTZAHL(SUCHEN("Kriterium";A1));"ja";"nein")

Funktionsweise der Formel

Hier wird geschaut ob das Wort "Suchkriterium" in der Zelle A1 auftaucht. Das Suchkriterium kann ein Wort, ein Text, eine Zahl oder eine andere beliebige Kombination von Zeichen sein.

1) SUCHEN("Kriterium";A1) prüft an welcher Stelle sich "Suchkriterium" in der Zelle A1 befindet. Wir bekommen entweder die Position als Zahl oder wenn es keinen Treffer gab den #WERT! Fehler zurück. 

2) Mit ISTZAHL wandeln wir das Ergebnis in WAHR oder FALSCH um. Zahl = WAHR, #WERT! = FALSCH

3) Diesen Wahrheitswert verbauen wir dann in unserer WENN-Funktion.

Alternative mit Berücksichtigung von Groß- und KLeinschreibung

=WENN(ISTZAHL(FINDEN("Kriterium";A1));"ja";"nein")

Mehrere Kriterien

=WENN(ANZAHL(SUCHEN({"Kriterium1";"Kriterium2"};A1))>0;"mind. ein Kriterium";"")

1) SUCHEN können wir auch mit mehreren Kriterien füttern. Entweder schreiben wir diese mit einer geschweiften Klammer als Array direkt in die Formel oder verweisen auf einen Zellbereich.

2) ANZAHL(SUCHEN({"Kriterium1";"Kriterium2"}
Wir bekommen hier jetzt zwei Ergebniswerte zurück die entweder #WERT! oder Zahlen enthalten. Dies Ergebniswerte zählen wir mit ANZAHL. Im Ergebnis bekommen wir 0, 1 oder 2 zurück. 

3) ANZAHL(SUCHEN({"Kriterium1";"Kriterium2"};A1))>0 
Wenn das Ergebnis größer 0 ist bedeutet dies, dass mind. ein Kriterium gefunden wurde.

3b) 3) ANZAHL(SUCHEN({"Kriterium1";"Kriterium2"};A1))=2 
Wenn das Ergebnis gleich 2 ist bedeutet dies, dass beide Kriterien gefunden wurden.

Anzahl wie viele Kriterien gefunden wurden ausgeben

=WENN(ANZAHL(SUCHEN({"Kriterium1";"Kriterium2";"Kriterium3"};A1))>0;
ANZAHL(SUCHEN({"Kriterium1";"Kriterium2";"Kriterium3"};A11))&" Kriterien gefunden";"")

1) Hier suchen wir nach 3 Kriterien und bekommen die Anzahl der Treffer zurück.

2) Diese Trefferanzahl verbauen wir dann im Ergebnistext.

Anzahl wie viele Kriterien gefunden wurden ausgeben - Kurzschreibweise

=LET(Formel;ANZAHL(SUCHEN({"Kriterium1";"Kriterium2";"Kriterium3"};A1));
WENN(Formel>0;Formel&" Kriterien gefunden";""))

1) Hier nutzen wir LET um doppelte Formelbestandteile zu vermeiden. Dies hat den Vorteil, dass wir die Kriterien nur an einer Stelle anpassen müssen. 

Praxisbeispiel Übereinstimmungsgrad

In diesem Beispiel weisen wir der Trefferanzahl einen bestimmten Text zu:
0 Treffer = keine Übereinstimmung
1 Treffer = niedrige Übereinstimmung
2 Treffer = mittlere Übereinstimmung
3 Treffer = hohe Übereinstimmung

=LET(Trefferanzahl;ANZAHL(SUCHEN(Kriterien;A1));
WENN(Trefferanzahl>0;WAHL(Trefferanzahl;"niedrige";"mittlere";"hohe")&" Übereinstimmung";"keine Übereinstimmung"))

1) SUCHEN(Kriterien;A1)
Hier suchen wir nach mehreren Kriterien. Das können z.B. Vorname, Nachname, Geburtsdatum usw. sein die in einer Suchmaske bzw. verschiedenen Zellen stehen.

2) LET(Trefferanzahl;ANZAHL(SUCHEN(Kriterien;A1));...
Mit LET speichern wir die Anzahl der Treffer in der Variable Trefferanzahl, welche wir im Rest der Formel verwenden.

3) WENN(Trefferanzahl>0;...
Wenn wir Treffer haben, soll abhängig von der Anzahl der übereinstimmenden Kriterien unterschiedlicher Text zurückgegeben werden. 

4) WAHL(Trefferanzahl;"niedrige";"mittlere";"hohe")
Mit der WAHL-Funktion weisen wir abhängig von der Trefferanzahl unterschiedliche Worte zu.
Trefferanzahl 1 = "niedrige"
Trefferanzahl 2 = "mittlere"
Trefferanzahl 3 = "hohe"
und verketten diese mit weiterem Text  &" Übereinstimmung"

5) Wenn die Trefferanzahl gleich null ist geben wir am Ende der WENN-Funktion noch "keine Übereinstimmung" aus.