这个程序员用他的Lookup函数做什么?

时间:2016-08-10 11:08:10

标签: excel-formula

我在论坛上找到了一个公式,可以找到列中最后一个填充的单元格:

LOOKUP(2,1/(G:G<>""),ROW(G:G)))

但是这一点还在发生什么?

1/(G:G<>"")

一分为??? (这些不等于&#34;&#34;?)我不明白这里的逻辑。

1 个答案:

答案 0 :(得分:0)

如果您想通过使用公式审核评估公式来逐步观察计算,我强烈建议您限制范围。说申请:

=LOOKUP(2,1/(G1:G10<>""),ROW(G1:G10))

并且,为了便于说明,在表格中填充不低于G6(但在G1:G5范围内,在这种情况下可能有助于理解正在发生的事情)。

对于这个答案,我只考虑五个细胞:G1,G3和G4填充,G2和G5(以后)没有。

1/(G1:G5<>"")

确实是这个公式的核心。正如您所认识到的那样,G1:G5<>""会测试是否等于&#34;&#34; ""是&#39;空&#39;}的惯例。对于Excel单元格。如果填充(即&#34;非空&#34;),则返回TRUE,否则返回FALSE。因此,对于针对该示例选择的五个单元,返回关于G1:G5的数组:

TRUE;FALSE;TRUE;TRUE;FALSE

在算术计算中,Excel将TRUE视为1,将FALSE视为0。因此,使用上面的真值表作为分母,1作为分子给出一个数组(再次按顺序):

1/1;1/0;1/1;1/1;1/0

解析为:

1;#DIV/0!;1;1;#DIV/0!

在上面的LOOKUP函数中,2被选为lookup_value。 (任何其他大于1的数字都同样适用。)因此,我们在一个由2或错误组成的数组中寻找1。因此,没有机会找到完全匹配,因此默认启动,这是最后一个值(按顺序,不计算错误)。数组中的最后一个1是第四个元素,ROW中的第四个元素(G1:G5)是...... 4

G4是ColumnG中最后一个填充的单元格(在我的示例中)。