excel最接近的截止日期

时间:2018-07-02 06:58:08

标签: excel date excel-formula

我在一行中有日期,在其下一行中有一个空行,在其中我可以在任何需要或需要的单元格上键入“ C”来获得高于其的日期,但是我只能得到第一个C,所以我想做的实际上是忽略我写的与今天的过去日期相对应的每个“ C”,而只给我距离今天更近的一个或下一个。

例如:假设今天是2018年7月1日,因此我在第1行有一系列日期,例如A1=June 30 2018B1= July 1 2018C1=July 2 2018D1=July 3 2018,等等,在第2行中,我在A2,C2和E2上键入了C,所以在HLOOKUP it returns 2018年6月30日`,但我不希望那样,因为该日期是过去的日期,所以我想获得下一个更接近的日期在今天之后,所以应该是C2,即2018年7月2日,依此类推,因为今天的公式会随着时间的流逝而更新。

这是为了在项目Cronogram上获取下一个检查日期,因此所有日期都已定义,但是每个任务的结果都应自动更新以保持与计划的相关性,因此过去的日期只是没有任何意义。结果显示在甘特图表上,是的,我知道很容易,只要删除对应于过去日期的“ C”,那么excel的意义何在?

enter image description here

1 个答案:

答案 0 :(得分:1)

我将在这里闲逛。...您想在今天的日期(第1行)之后的第2行中找到第一个C

  • MATCH会告诉您今天的日期在哪一列:MATCH(TODAY(),$1:$1,0)返回3,因为7月2日在C1中。
  • INDEX与MATCH:INDEX($2:$2,,MATCH(TODAY(),$1:$1,0))
  • 结合使用时,将返回对今天日期以下单元格的引用。
  • COUNTA会告诉您在行1中填充日期的最后一列:在我的情况下,COUNTA($1:$1)返回9,因为我输入了A1:I1中的日期。
  • 再次使用INDEX返回对第2行中最后一个单元格的引用。INDEX($2:$2,,COUNTA($1:$1))
  • 同时粘贴两个INDEX以获得从今天的日期到您的数据结尾的范围参考:INDEX($2:$2,,MATCH(TODAY(),$1:$1,0)):INDEX($2:$2,,COUNTA($1:$1))-由于将参考返回到多个单元格,因此返回错误。
  • 现在找到引用范围内的第一个C:由于我在7月2日得到C,MATCH("C",INDEX($2:$2,,MATCH(TODAY(),$1:$1,0)):INDEX($2:$2,,COUNTA($1:$1)),0)返回1。
  • 将今天日期所在的列添加到返回的列中(负1表示该日期)。 SUM(-1,MATCH(TODAY(),$1:$1,0),MATCH("C",INDEX($2:$2,,MATCH(TODAY(),$1:$1,0)):INDEX($2:$2,,COUNTA($1:$1)),0))返回今天当天或之后的第一个C的列号。
  • 使用该数字返回对第1行中的日期的引用:=INDEX($1:$1,,SUM(-1,MATCH(TODAY(),$1:$1,0),MATCH("C",INDEX($2:$2,,MATCH(TODAY(),$1:$1,0)):INDEX($2:$2,,COUNTA($1:$1)),0)))

所以您的最终公式是:

=INDEX($1:$1,,SUM(-1,MATCH(TODAY(),$1:$1,0),MATCH("C",INDEX($2:$2,,MATCH(TODAY(),$1:$1,0)):INDEX($2:$2,,COUNTA($1:$1)),0)))

有点长,我相信可以用更短的公式完成。
编辑:我也同意Rawrplus-您可以更好地解释它。