2017-10-25 1 views
0

Also habe ich eine Tabelle für verschiedene Regionen und entsprechende Werte für verschiedene Jahre 2014-2017. Nicht alle Regionen haben einen Wert für das Jahr 2017. Wenn ich jedoch eine WorksheetFunction.VLookup(...) mache, wird 0 zurückgegeben, wenn die fragliche Zelle leer ist.Excel Vba: Überprüfen Sie, ob VLookup leeren Wert zurückgibt, da Vlookup leer mit 0 ersetzt

Ich muss meinen speziellen Wert (-1) anstelle von 0 setzen, wenn die Zelle für eine bestimmte Region leer ist, aber ich kann nicht zwischen echten Nullen und Nullen Vlookup anstelle von leeren Werten unterscheiden. Wie würde ich es tun?

EDIT: Ich kann nicht IsEmpty auf einzelne Zellen verwenden, weil ich nicht die Adresse der Zelle Ergebnis weißt mich - ich Schleife obwohl sie in einem Zyklus, ohne auch nur ein erstes Arguments der Adresse zu kennen. Alles, was ich habe, ist das Ergebnis - entweder eine echte oder eine falsche Null.

+0

Sie können die IsEmpty-Funktion verwenden, um zu überprüfen, ob die Zelle leer ist. –

+0

@Egan Wolf Redigiert die Frage. – Ans

+1

'WorksheetFunction.VLookup' gibt 0 nicht zurück, wenn die Suchzelle leer ist. Nur wenn Sie versuchen, das Ergebnis in einer Zahlenvariablen zu speichern, wird es in 0 konvertiert. – Rory

Antwort

0

this answer

Der Trick ist, zu verwenden, jede Überprüfung =if(len(vlookup(a2,f$2:g$20,2))=0,"",vlookup(a2,f$2:g$20,2)) Arbeitete funktioniert nicht auf result = VLookup(...) sondern eher auf VLookup selbst, be Es hatte Zeit, die Leere auf Null zu ändern.

0

Ich bin mir nicht sicher, aber ich denke mit IF, ISEmpty wird Ihr Problem lösen.

Verwenden WorksheetFunction.Match Zellenadresse erhalten

currentCell= the cell in which you'll be putting value 
concernedCell=The cell which can be empty 

If(Isempty(concernedCell)) Then 
currentCell.value=-1 
Else 
currentCell.value=concernedCell.value 
+0

Ich kenne die Adresse der 'currentCell' nicht, also ist sie nutzlos. Ich kann nur mit Vlookup Ergebnis herumspielen. – Ans

+1

Könnten Sie bitte Ihren Code teilen, der Punkt ist, Sie setzen das Ergebnis von vlookup irgendwo, das muss Adresse geben. Oder es kann sein, dass ich etwas verpasse. Freigabecode wird eine große Hilfe sein. –

0

Sie können prüfen, ob SVERWEIS eine leere Zelle zurückgibt.

Als Arbeitsblatt Formel, die Sie verwenden können: =IF(VLOOKUP(K9,$F$2:$G$6,2,FALSE)="",-1,VLOOKUP(K9,$F$2:$G$6,2,FALSE))

Als VBA Beispiel Sie nutzen könnten:

Public Function MyVlookup(lookup_value, table_array As Range, col_index_num As Long, Optional range_lookup As Boolean = False) As Variant 

    Dim ReturnValue As Variant 

    ReturnValue = WorksheetFunction.VLookup(lookup_value, table_array, col_index_num, range_lookup) 

    If IsEmpty(ReturnValue) Then 
     MyVlookup = -1 
    Else 
     MyVlookup = ReturnValue 
    End If 

End Function