如果vlookup在2个日期之间,则返回较早的日期

时间:2017-05-05 07:17:21

标签: excel date vlookup

我有一个日期列表,当人们提交他们想要出售的东西时,我有一个卖家窗口,每两周一次,这些卖家可以实际卖出。

我希望将列表与所有日期与销售窗口列表相匹配(销售Windows在13.07和27.07上),但是简单的vlookup(使用TRUE)会返回类似这样的内容:

卖方
提交|销售窗口(使用卖家窗口列表中的vlookup)
13.07.2016 |相应的销售窗口应为13.07。这里
14.07.2016 |但是27.07。从这里。
2016年7月14日
2016年7月14日
2016年7月14日
2016年7月18日
2016年7月18日
2016年7月20日
2016年7月20日
2016年7月20日
2016年7月21日
2016年7月21日
2016年7月22日
25.07.2016 |但是,vlookup返回13.07。直到这里和 27.07.2016 | 27.07。作为销售窗口仅从此日期开始。
2016年7月28日
28.07.2016

有谁知道如何解决这个问题?

3 个答案:

答案 0 :(得分:1)

您可以将MATCH函数与INDEX函数结合使用来查找值,这样您就可以从match_type参数中受益,该参数构成{{1}的一部分功能。

以下是MATCH参数的一些信息:

  

匹配类型信息

     
      
  • 如果match_type为1或省略,MATCH将找到小于或等于lookup_value的最大值。 lookup_array参数中的值必须按升序排列,例如:... - 2,-1,0,1,2,...,A-Z,FALSE,TRUE。
  •   
  • 如果match_type为0,MATCH将找到与lookup_value完全相等的第一个值。 lookup_array参数中的值可以是任何顺序。
  •   
  • 如果match_type为-1,MATCH将找到大于或等于lookup_value的最小值。 lookup_array参数中的值必须按降序排列,例如:TRUE,FALSE,Z-A,... 2,1,0,-1,-2,...等等。
  •   

(资料来源:https://support.office.com/en-gb/article/MATCH-function-e8dffd45-c762-47d6-bf89-533f4a37673a

这意味着只要您的match_type(销售窗口)按降序排列,您就可以使用-1 match_type

公式看起来像这样:

lookup_array

您的销售窗口位于=INDEX($C$2:$C$3,MATCH(A1,$C$2:$C$3,-1)) ,您的提交日期位于A列,公式位于B列,例如:

C2:C3

答案 1 :(得分:1)

这是我的想法。

如果完全匹配成功(例如,对于13/7/16),请从B列的匹配行中获取结果。

如果完全匹配失败(例如16/7/16),请进行不精确的匹配,并从B列的下一行获取结果。

=INDEX($B$2:$B$5,IFERROR(MATCH(A2,$B$2:$B$5,0),MATCH(A2,B$2:$B$5,1)+1))

enter image description here

为了完整起见,这是一个VLOOKUP公式

=VLOOKUP(A2,$B$2:$B$5,1,TRUE)+14*(A2>VLOOKUP(A2,$B$2:$B$5,1,TRUE))

和另一个使用MOD的公式

=IF(MOD(A2-$B$2,14),A2+14-MOD(A2-$B$2,14),A2)

但最后两个假设卖出日期之间的差异为14天。第一个公式更灵活,因为如果出售日期可以作为问题中所述的列表提供,它可以允许公共假期等。

答案 2 :(得分:0)

假设您的日期是日期格式 - 在您的vlookup中从日期中减去1。您的vlookup将提前2周。

要更正此问题,您可以在vlookup结果中添加14。

= VLOOKUP(D4-1,$ F $ 3:$ F $ 6,1)14

如果您的列表日期在D栏,而您的销售日期在F列。