我在一行中有日期,在其下一行中有一个空行,在其中我可以在任何需要或需要的单元格上键入“ C”来获得高于其的日期,但是我只能得到第一个C,所以我想做的实际上是忽略我写的与今天的过去日期相对应的每个“ C”,而只给我距离今天更近的一个或下一个。
例如:假设今天是2018年7月1日,因此我在第1行有一系列日期,例如A1=June 30 2018
,B1= July 1 2018
,C1=July 2 2018
,D1=July 3 2018
,等等,在第2行中,我在A2,C2和E2上键入了C,所以在HLOOKUP it returns
2018年6月30日`,但我不希望那样,因为该日期是过去的日期,所以我想获得下一个更接近的日期在今天之后,所以应该是C2,即2018年7月2日,依此类推,因为今天的公式会随着时间的流逝而更新。
这是为了在项目Cronogram上获取下一个检查日期,因此所有日期都已定义,但是每个任务的结果都应自动更新以保持与计划的相关性,因此过去的日期只是没有任何意义。结果显示在甘特图表上,是的,我知道很容易,只要删除对应于过去日期的“ C”,那么excel的意义何在?
答案 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($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。 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的列号。 =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-您可以更好地解释它。