VBA-Abfrage: Verwendung von Like und Not Like
Schritt-für-Schritt-Anleitung
Um in Excel VBA eine Abfrage durchzuführen, die eine Summe basierend auf einem bestimmten Kriterium berechnet, kannst du die folgende Schritt-für-Schritt-Anleitung nutzen. In diesem Beispiel zählen wir die Werte in Spalte B, wenn in Spalte A der Buchstabe "K" nicht vorkommt.
- Öffne Excel und gehe zum VBA-Editor (Alt + F11).
- Füge ein neues Modul hinzu (Rechtsklick auf "VBAProject", dann "Einfügen" > "Modul").
- Kopiere den folgenden VBA-Code in das Modul:
Sub BerechneSummeOhneK()
With Worksheets("Tabelle1")
Dim Summe As Double
Summe = 0
For n = 2 To .Range("A65536").End(xlUp).Row '2 da Überschrift in Zeile 1
If Not (.Cells(n, 1) Like "*K*") Then
Summe = Summe + .Cells(n, 2)
End If
Next n
.Cells(n, 2) = Summe
.Cells(n, 1) = "Summe aller Werte ohne *K*"
End With
End Sub
- Schließe den VBA-Editor und kehre zu Excel zurück.
- Führe das Makro "BerechneSummeOhneK" aus (Alt + F8 und dann auf "Ausführen" klicken).
Häufige Fehler und Lösungen
-
Problem: Der Code funktioniert nicht, wenn ich If Not SpalteA Like "*K*" benutze.
Lösung: Stelle sicher, dass du den richtigen Bezug auf die Zellen hast. Der VBA-Befehl sollte If Not (.Cells(n, 1) Like "*K*") sein, um sicherzustellen, dass du den Wert korrekt überprüfst.
-
Problem: Die Summe wird nicht korrekt berechnet.
Lösung: Überprüfe, ob die Werte in Spalte B tatsächlich numerisch sind. Nicht-numerische Werte verursachen Fehler bei der Berechnung.
Alternative Methoden
Eine alternative Methode zur Berechnung der Summe ohne den Buchstaben "K" in Spalte A ist die Verwendung der Instr-Funktion. Hier ist ein Beispiel:
Sub BerechneSummeOhneK_Instr()
With Worksheets("Tabelle1")
Dim Summe As Double
Summe = 0
For n = 2 To .Range("A65536").End(xlUp).Row
If Instr(.Cells(n, 1), "K") = 0 Then
Summe = Summe + .Cells(n, 2)
End If
Next n
.Cells(n, 2) = Summe
.Cells(n, 1) = "Summe aller Werte ohne *K*"
End With
End Sub
Praktische Beispiele
Angenommen, du hast folgende Tabelle:
| SpalteA |
SpalteB |
| AIKS |
2 |
| AIGE |
3 |
| AFDE |
4 |
| SIEF |
3 |
| SIKD |
3 |
Wenn du das Makro ausführst, wird die Summe der Werte in Spalte B, die keinen "K" in Spalte A haben, berechnet. In diesem Fall wäre das Ergebnis 6 (3 + 3).
Tipps für Profis
- Verwende
Option Explicit am Anfang deines Moduls, um sicherzustellen, dass alle Variablen deklariert sind. Dies hilft, Fehler zu vermeiden.
- Du kannst die
Like-Abfrage auch anpassen, um andere Muster zu suchen. Zum Beispiel If .Cells(n, 1) Like "*A*" würde alle Zellen zählen, die ein "A" enthalten.
- Nutze die Funktion
Debug.Print, um während der Ausführung Werte zu prüfen und sicherzustellen, dass dein Code wie gewünscht arbeitet.
FAQ: Häufige Fragen
1. Wie funktioniert die Like-Abfrage in VBA?
Die Like-Abfrage wird verwendet, um Muster in Text zu überprüfen. Zum Beispiel gibt If SpalteA Like "*K*" True zurück, wenn "K" irgendwo in Spalte A vorkommt.
2. Was ist der Unterschied zwischen Like und Instr?
Like prüft, ob ein bestimmtes Muster in einem String vorhanden ist, während Instr die Position eines Teilstrings in einem String zurückgibt. Wenn Instr 0 zurückgibt, bedeutet das, dass der Teilstring nicht vorhanden ist.
3. Kann ich auch mehrere Bedingungen kombinieren?
Ja, du kannst mehrere Bedingungen kombinieren. Zum Beispiel: If Not (.Cells(n, 1) Like "*K*") And (.Cells(n, 2) > 0) Then prüft, ob "K" nicht vorhanden ist und der Wert in Spalte B größer als 0 ist.