我有一张excel表格,其格式如下
Name 1/1/2018 1/8/2018 1/15/2018 1/23/2018 1/30/2018
project1 dev dev
project2 dev dev dev
project3 dev dev
我正在尝试创建一个查询,其中我提供了Name字段,它返回与该名称相关联的行中第一个“dev”实例对应的列名(日期字符串)。我正在尝试创建另一个查询,该查询将返回该行中“dev”的最后一个实例。
例如,对于project1,第一个查询将返回1/8/2018,第二个查询将返回1/15/2018。对于project2,第一个查询将返回1/15/2018,第二个查询将返回1/30/2018。
我已经得到了这个,我认为应该找到project2行中至少一个“dev”的列索引,但即使这样也行不通,即使它确实如此我也是不确定如何找到第一个“dev”与最后一个“dev”以及如何获取列名。
= MATCH(“dev”,INDEX(A1:F100,MATCH(“project2”,A:A,0),0))
如果有人有任何指示我真的很感激。我只是学习excel而且还没有掌握更高级的语法。
谢谢!
答案 0 :(得分:1)
假设日期按升序排序,如示例所示:
第一场比赛:
=AGGREGATE(15,6,1/(INDEX($A$2:$F$4,MATCH($A8,$A$2:$A$4,0),0)="dev")*$A$1:$F$1,1)
上次匹配:
=AGGREGATE(16,6,1/(INDEX($A$2:$F$4,MATCH($A8,$A$2:$A$4,0),0)="dev")*$A$1:$F$1,1)
或
=LOOKUP(2,1/(INDEX($A$2:$F$4,MATCH($A8,$A$2:$A$4,0),0)="dev"),$A$1:$F$1)
如果发生日期或列标题未排序,或列标题是文本而非实际日期,请尝试以下操作:
第一场比赛:
=INDEX($A$1:$F$1,1,AGGREGATE(15,6,1/(INDEX($A$2:$F$4,
MATCH($A8,$A$2:$A$4,0),0)="dev")*COLUMN($A$1:$F$1),1))
最后一场比赛
=INDEX($A$1:$F$1,1,AGGREGATE(16,6,1/(INDEX($A$2:$F$4,
MATCH($A8,$A$2:$A$4,0),0)="dev")*COLUMN($A$1:$F$1),1))
或
=LOOKUP(2,1/(INDEX($A$2:$F$4,MATCH($A8,$A$2:$A$4,0),0)="dev"),$A$1:$F$1)
答案 1 :(得分:0)
对于第一个并向下拖动:
/video/hd/
对于最后一个并向下拖动:
=INDEX($B$1:$F$1,MATCH("dev",$B2:$F2,0))
在最后一个上使用ctrl + shift + enter作为数组公式输入并向下拖动
参考:
https://exceljet.net/formula/get-last-match
编辑:
OP已将后者简化为:
{=INDEX($B$1:$F$1,MAX(IF($B2:$F2="dev",COLUMN($B2:$F2)-COLUMN(INDEX($B2:$F2,1,1))+1)))}