我正在使用Apache OpenOffice calc(v4.1.13),希望搜索一行,找到最后一行非空单元格,并返回该行的列标题。请注意,单元格包含文本,行中的一些单元格为空。
在this post中,他们使用=LOOKUP(2,1/(H228:S228<>""), H1:S1)
来返回最后一行的列标题。我首先将逗号改为分号以使用OpenOffice,然后更改行值以匹配我的范围,从而获得以下内容:=LOOKUP(2;1/(F4:I4<>"");F1:I1)
,但我收到#DIV/0错误。
如果我在F4:I4中的空白单元格中放入虚拟数据,#DIV/0错误就会消失,函数也会工作。
据我所知,在Excel中,如果行中的某些单元格为空,则此公式将起作用。但在OpenOffice Calc中,情况似乎并非如此,因为我得到了#DIV/0错误。如何在Calc中使此公式起作用?
2条答案
按热度按时间p3rjfoxz1#
改编自https://ask.libreoffice.org/t/return-the-last-value-in-a-column/53646:
下面是该帖子的解释:
查找()强制其参数进入数组模式。在此ISNUMBER中(...)返回值为1和0的数组,然后返回1/ISNUMBER(...)产生一个由1和#DIV/0错误值组成的数组。LOOKUP()具有默认忽略此类数组中错误值的行为,因此查找值2将返回最后一个值1的位置。在这种情况下,查找1也同样有效。但是在内部比较更多的元素以找到最后的匹配值,而对于值2,搜索进行完全的二分搜索以排除数据块,这更快。
编辑:
这适用于文本和数字。
编辑2:
下面是一个针对AOO的解决方案,改编自https://forum.openoffice.org/en/forum/viewtopic.php?f=9&t=66962:
rjee0c152#
Jim K已经非常接近了,我已经采纳了他的建议,并将其发布在这里。下面的公式查找X行中最后一列的文本(在本例中为9),并返回同一列的Y行(在本例中为#1,列标题)。我可以确认以下内容:
=LOOKUP("ZZZ";F9:ZZ9;F1:ZZ1)
非常感谢那些帮助我们的人!