我有一行包含四个单元格的数据;港口代码,距离覆盖,到达时间和出发时间。距离覆盖列可以为空。
我们的想法是使用列表中的第一个和最后一个端口填充列F和G(以提供给用户表单中的过滤系统,这超出了我的范围,我试图不去考虑它现在。)
F列中的单元格是对H列的简单引用。我使用Last value(=LOOKUP(2,1/(3:3<>""),3:3)
)中的方法获取行中的最后一个值,这很正常。不幸的是,最后一个值是出发时间,而我需要的是端口代码。我已尝试在公式中的几个不同位置添加-3
,但我似乎无法将其发布...
我可以调整列的顺序以将端口代码放在最后,但是我希望保持原样,因为任务规范规定了此顺序。
有人可以帮忙吗?
答案 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)))
如果您还有任何疑问,请询问;)