查找连续的最后一个值

我有一行包含四个单元组的数据; 港口代码,距离覆盖,到达时间和出发时间。 距离覆盖列可以是空的。

我们的想法是使用列表中的第一个和最后一个端口来填充列F和G(以馈送到用户窗体中的filter系统,这超出了我现在不想考虑的范围)。

列示例

F列中的单元格是对H列的简单引用。我使用了Last value ( =LOOKUP(2,1/(3:3<>""),3:3) )的方法来获取行,这工作正常。 不幸的是,最后的价值是离开的时间,而我需要的是港口代码。 我已经尝试在公式中的几个不同的地方添加-3 ,但我似乎无法完成…

可以调整列的顺序以将端口代码放在最后,但是我想按照任务规范规定的顺序保留它。

谁能帮忙?

我的评论是一个比完整的解决scheme更多的build议,但如果这是你需要解决你的问题,那么我会张贴它作为一个答案。

为了获得行/列中的最后一个条目,快速解决scheme是匹配的。 在你的情况下:

 get the last numerical value: =MATCH(1E+99,3:3) get the last string: =MATCH("zzz",3:3) 

它的工作方式也非常简单: MATCH简单地遍历所有单元格,直到find与第一个选项或第二个选项的search项相同或更大的值,直到find完美匹配或string在search字词之后被“sorting”。 假设范围内没有可能的匹配,它将指向可以比较的最后一个单元(作为数字值)。 但是,如果在整个范围内没有find任何内容(第一个选项没有数字,第二个没有string),那么两个公式都会出错,并且还要记住="" (空string)仍然会被视为一个string。
如果整个范围有可能没有其中一个,那么你需要满足以下条件:

 =MAX(IFERROR(MATCH("zzz",A:A),0),IFERROR(MATCH(1E+99,A:A),0)) 

但是,这只会将最后一列作为数字返回。 也可以得到这个值,你可以简单地把它放在这样一个INDEX里面:

 =INDEX(3:3,1,MAX(IFERROR(MATCH("zzz",A:A),0),IFERROR(MATCH(1E+99,A:A),0))) 

如果您还有任何问题,请询问;)