如果vlookup在2个date之间,则返回更早的date

我有一个date列表,当人们提交他们想要出售的东西,我有一个卖方窗口,这是每两周,卖方可以真正出售。

我想与所有的date列表与销售窗口列表(销售Windows在13.07和27.07),但简单的查找(使用TRUE)返回给我这样的事情:

卖家
提交| 销售窗口(使用卖家窗口列表中的查找)
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。 作为从这个date开始的销售窗口。
2016年7月28日
2016年7月28日

有谁知道我可以解决这个问题?

这是我的想法。

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

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

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

在这里输入图像说明

只是为了完整性,这里是一个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) 

但最后两个假设出售date之间的14天不变的差异。 第一个公式更灵活,因为它可以允许公共假期等,如果销售date可以作为问题中陈述的清单。

您可以将MATCH函数与INDEX函数结合使用来查找值,这将允许您从构成MATCH函数一部分的match_type参数中受益。

以下是关于match_type参数的一些信息:

匹配types信息

  • 如果match_type为1或省略,MATCH将查找小于或等于lookup_value的最大值。 lookup_array参数中的值必须按照升序排列,例如:…- 2,-1,0,1,2,…,AZ,FALSE,TRUE。
  • 如果match_type为0,则MATCH查找与lookup_value完全相同的第一个值。 lookup_array参数中的值可以按任意顺序排列。
  • 如果match_type为-1,则MATCH将查找大于或等于lookup_value的最小值。 lookup_array参数中的值必须按降序排列,例如:TRUE,FALSE,ZA,… 2,1,0,-1,-2,…依此类推。

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

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

公式看起来像这样:

 =INDEX($C$2:$C$3,MATCH(A1,$C$2:$C$3,-1)) 

如果您的销售窗口位于C2:C3 ,您的提交date位于A列,公式位于B列,例如:

  | A | B | C | |------------+------------+-----------------| 1| Submitting | Lookup | Selling Windows | |------------+------------+-----------------| 2| 13/07/2016 | 13/07/2016 | 27/07/2016 | 3| 14/07/2016 | 27/07/2016 | 13/07/2016 | 4| 15/07/2016 | 27/07/2016 | | 5| 16/07/2016 | 27/07/2016 | | 6| 17/07/2016 | 27/07/2016 | | 7| 18/07/2016 | 27/07/2016 | | 8| 19/07/2016 | 27/07/2016 | | 9| 20/07/2016 | 27/07/2016 | | 10| 21/07/2016 | 27/07/2016 | | 11| 22/07/2016 | 27/07/2016 | | 12| 23/07/2016 | 27/07/2016 | | 13| 24/07/2016 | 27/07/2016 | | 14| 25/07/2016 | 27/07/2016 | | 15| 26/07/2016 | 27/07/2016 | | 16| 27/07/2016 | 27/07/2016 | | 

假设你的date是date格式 – 在你的vlookup从date减1。 你的vlookup将提前2周。

要改正这个,你可以在vlookup结果中加14。

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

如果您的清单date在D栏中,而您的销售date在F栏中