我如何将查找值设置为VLOOKUP的日期范围?

时间:2013-05-20 03:11:56

标签: excel excel-vba vba

enter image description here

嗨,我试图通过将单元格G2中的投标截止日期与vlookup匹配来获取X,Y和Z的值。

但是,我真的输了,因为它返回了#n / a。

有人知道可以做些什么吗?

2 个答案:

答案 0 :(得分:3)

您不能使用VLOOKUP来匹配左侧的列,但您可以使用INDEX。举个例子,你输入问题,进入单元格G3:

=INDEX(A3:A10,MATCH(G2,E3:E10,0))

然后,您应该获得与在单元格G2中输入的日期结束的投标有关的'x'值。然后,您可以复制INDEX中的第一个范围,将相应的y和z值更改为B列和C列。

请记住,INDEX与VLOOKUP相同,因为它只会返回第一个值,如果两个投标在同一天完成,它只返回它遇到的第一个,如果你有多个可能SUMIF会工作得更好,可能在COUNTIF旁边显示有多少。

编辑 - 进一步请求多列

如果您想匹配开始和结束日期,您需要使用如下所示的数组公式,其中您要查找的开始日期位于单元格G2中,而单元格G3中的结束日期为:

=INDEX(A3:A10,MATCH(1,(G2=D3:D10)*(G3=E3:E10),0))

注意这是一个数组公式,因此当您输入公式时,需要按Ctrl + Shift + Enter,而不只是输入

使用此方法,它检查两个标准true / false(分别为1和0),因此它检查每一行,如果D和E列符合您的条件,则它会执行1 * 1并匹配您输入的1的条件。任何其他组合将等于0,例如,如果列D匹配但是E不匹配则1 * 0 = 0,如果两者都不匹配则0 * 0 = 0。

使用此功能,您可以扩展查找,将*更改为+将返回EITHER列符合条件的第一行:

=INDEX(A3:A10,MATCH(1,(G2=D3:D10)+(G3=E3:E10),0))

您可以使用相同的方法在条件中添加更多列,我不确定限制是什么。

答案 1 :(得分:0)

我知道您没有匹配G2 完全中的日期,您只需要获得它适合的范围。要做到这一点并返回正确的“x”,“y”或“z”值,您可以使用LOOKUP,例如得到“x”值

=LOOKUP(G2,D3:D10,A3:A10)

这将为您的示例数据提供96.50

A3:A10范围分别更改为B3:B10C3:C10分别为“y”和“z”值