2017-03-22 7 views
1
私は値を返すために VLOOKUP()を使用していますが、第一値はかもしれ問題に当たっています

NULLまたは0私はこの機能を使用するにはどうすればよいVLOOKUP()戻り第一非nullまたは非0値

(または類似1)NON nullまたは0の値を返しますか?

Application.WorksheetFunction.VLookup(filterCon, Sheets("Ace Up Sleeve").Range("A:P"), 11, False) 
+1

VLOOKUP式は最初に見つかった結果のみを返します。たとえば、別の数式またはFindメソッドを使用する必要があります。 – SJR

答えて

2

これをワークシートで実行するには、AGGREGATEワークシート関数を使用します。これをVBAに入れて、同じ式にApplication.Evaluate(...)を使うことができます。

Dim filterCon As String, fr As Variant, lr As Long, vreturn As Variant 

filterCon = "findthis" 

With Worksheets("Ace Up Sleeve") 
    lr = .Cells(.Rows.Count, "A").End(xlUp).Row 
    fr = Application.Evaluate("aggregate(15, 6, row(1:" & lr & ")/('Ace Up Sleeve'!K1:K" & lr & "<>0), 1)") 
    If Not IsError(fr) Then 
     vreturn = .Cells(fr, "K").Value 
     Debug.Print vreturn 
    End If 
End With