查找连续的最后一个值

时间:2016-05-19 09:58:14

标签: excel excel-formula

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

我们的想法是使用列表中的第一个和最后一个端口填充列F和G(以提供给用户表单中的过滤系统,这超出了我的范围,我试图不去考虑它现在。)

Column example

F列中的单元格是对H列的简单引用。我使用Last value=LOOKUP(2,1/(3:3<>""),3:3))中的方法获取行中的最后一个值,这很正常。不幸的是,最后一个值是出发时间,而我需要的是端口代码。我已尝试在公式中的几个不同位置添加-3,但我似乎无法将其发布...

可以调整列的顺序以将端口代码放在最后,但是我希望保持原样,因为任务规范规定了此顺序。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

我的评论更多的是一个建议,而不是一个完整的解决方案,但如果你只需要解决问题,那么我会把它作为答案发布。

要获取行/列中的最后一个条目,快速解决方案是匹配的。在你的情况下:

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

它的工作方式也非常简单:MATCH只是循环遍历所有单元格,直到找到与第一个选项或第二个选项的搜索项相同或更大的值,直到找到完美匹配或在搜索词后“排序”的字符串。假设范围内没有可能的匹配,它将指向可以比较的最后一个单元格(作为数值)。但是,如果在整个范围内没有找到任何内容(没有数字第一个选项且第二个选项没有字符串),则两个公式都会出错,并且还要记住=""(空字符串)仍将计为字符串。
如果整个范围都有可能没有其中一个,那么你需要完整的术语:

=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)))

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