Perhaps?
=LOOKUP(9.99999E+307,CHOOSE({1,2},INDEX($G$2:$G$16,MATCH(1,INDEX(($A$2:$A$16=K2)*($B$2:$B$16=K3),0),0)),LOOKUP(2,1/(($A$2:$A$16=K2)*($B$2:$B$16=K3)*($C$2:$C$16<=K4)),$G$2:$G$16)))
or if using XL2007 or later:
=IFERROR(LOOKUP(2,1/(($A$2:$A$16=K2)*($B$2:$B$16=K3)*($C$2:$C$16<=K4)),$G$2:$G$16),INDEX($G$2:$G$16,MATCH(1,INDEX(($A$2:$A$16=K2)*($B$2:$B$16=K3),0),0)))
if either of these gives back an error, than the value in K2 and/or K3 don't match up.
You could nest another IFERROR to return a more intelligent result like "No Matches for K2 or K3 found" like this:
=IFERROR(IFERROR(LOOKUP(2,1/(($A$2:$A$16=K2)*($B$2:$B$16=K3)*($C$2:$C$16<=K4)),$G$2:$G$16),INDEX($G$2:$G$16,MATCH(1,INDEX(($A$2:$A$16=K2)*($B$2:$B$16=K3),0),0))),"No Matches for K2 or K3 found")
Bookmarks