SVERWEIS: Leere Einträge überspringen in Excel
Schritt-für-Schritt-Anleitung
Um leere Zellen beim SVERWEIS in Excel zu überspringen, kannst Du folgenden VBA-Code verwenden:
Sub sverweisLeereZellenUeberspringen()
Dim was As Range, wo As Range
Dim wasZelle As Range, varWert As Variant
Application.ScreenUpdating = False
Set was = ActiveWorkbook.ActiveSheet.Range("A1:A500")
Set wo = Workbooks("Material Master Overview with prices - sauber.XLS").Sheets("Material Master Overview with p").Range("A1:B4400")
For Each wasZelle In was
If wasZelle.Value <> "" Then
varWert = Application.VLookup(wasZelle.Value, wo, 2, False)
If Not IsError(varWert) Then
wasZelle.Offset(, 2).Value = varWert
End If
End If
Next
Application.ScreenUpdating = True
End Sub
In diesem Code wird jede Zelle in dem Bereich was überprüft. Wenn die Zelle nicht leer ist, wird der SVERWEIS durchgeführt. Andernfalls wird einfach zur nächsten Zelle übergegangen.
Häufige Fehler und Lösungen
-
Runtime Error '13' - Type Mismatch
- Dies kann auftreten, wenn Du versuchst, einen mehrzelligen Bereich direkt mit
.Value zu verwenden. Achte darauf, dass Du die Zellen einzeln überprüfst, wie im obigen Code gezeigt.
-
N/A Fehler bei Nichtübereinstimmung
- Um N/A zu vermeiden, solltest Du den Rückgabewert von
VLookup in einer Variablen speichern und dann prüfen, ob es ein Fehler ist, bevor Du den Wert in die Zielzelle schreibst.
Alternative Methoden
Eine Alternative zur Verwendung von VBA ist die Anwendung von Formeln in Excel:
=IF(A1="", "", VLOOKUP(A1, 'Material Master Overview with prices - sauber.XLS'!A1:B4400, 2, FALSE))
Diese Formel überprüft, ob die Zelle A1 leer ist. Wenn ja, wird nichts ausgegeben; andernfalls wird der SVERWEIS durchgeführt. Du kannst diese Formel nach unten ziehen, um sie auf andere Zellen anzuwenden.
Praktische Beispiele
Angenommen, Du hast in Spalte A einige Artikelnummern und in Spalte B deren Preise. Du möchtest die Preise in Spalte C anzeigen, jedoch nur für die Artikelnummern, die nicht leer sind. Hier ist, wie Du den VBA-Code anpassen kannst:
Sub sverweisPreise()
Dim was As Range, wo As Range
Dim wasZelle As Range, varWert As Variant
Application.ScreenUpdating = False
Set was = ActiveWorkbook.ActiveSheet.Range("A1:A500")
Set wo = Workbooks("Material Master Overview with prices - sauber.XLS").Sheets("Material Master Overview with p").Range("A1:B4400")
For Each wasZelle In was
If wasZelle.Value <> "" Then
varWert = Application.VLookup(wasZelle.Value, wo, 2, False)
If Not IsError(varWert) Then
wasZelle.Offset(, 2).Value = varWert
End If
End If
Next
Application.ScreenUpdating = True
End Sub
Tipps für Profis
- Stelle sicher, dass der Suchbereich (
wo) und der Wertbereich (was) die gleichen Datentypen haben, um Fehler zu vermeiden.
- Verwende die Funktion
IsError, um sicherzustellen, dass der Rückgabewert von VLookup tatsächlich ein Wert ist und kein Fehler.
- Du kannst auch die
Application.Match-Funktion verwenden, um die Suche zu optimieren, besonders wenn Du große Datenmengen bearbeitest.
FAQ: Häufige Fragen
1. Was mache ich, wenn der SVERWEIS immer N/A zurückgibt?
Überprüfe, ob die gesuchten Werte tatsächlich im Suchbereich vorhanden sind und dass die Datentypen übereinstimmen.
2. Kann ich den SVERWEIS ohne VBA nutzen?
Ja, Du kannst Formeln verwenden, die die gleiche Logik wie der VBA-Code nutzen, um leere Zellen zu überprüfen.
3. Funktioniert dieser Code in allen Excel-Versionen?
Der VBA-Code sollte in den meisten modernen Excel-Versionen (Excel 2010 und später) funktionieren. Achte darauf, dass Makros in Deiner Excel-Anwendung aktiviert sind.