0

我发现以下公式在您在 Excel 的同一张工作表中搜索时效果很好。因此,当我希望 excel 返回第 3 行中的最后一个值时,此公式有效。

 ={INDIRECT(ADDRESS(3,MAX((3:3<>"")*COLUMN(3:3)),1))}

当我希望 excel 返回不同工作表的第 3 行中的最后一个值时,我很难使用它。任何人都可以帮忙吗?

谢谢 反相

4

1 回答 1

0

在这种情况下不需要 INDIRECT。

要使用不同的工作表,您必须在单元格地址中引用工作表。

{=INDEX(Sheet1!3:3,,MAX((Sheet1!3:3<>"")*COLUMN(Sheet1!3:3)))}

在不使用数组公式的情况下,同样可以通过以下方式实现:

=INDEX(Sheet1!3:3,,LOOKUP(2,1/(Sheet1!3:3<>""),COLUMN(Sheet1!3:3)))

但这是基于一个奇怪的未真正记录的 LOOKUP 行为,它需要 {1; #DIV/0; 1个;1个;#DIV/0} 作为排序数组。

INDEX 变体返回一个单元格引用。所以我们可以建立动态范围,如:

Sheet1!A3:INDEX(Sheet1!3:3,,LOOKUP(2,1/(Sheet1!3:3<>""),COLUMN(Sheet1!3:3)))

如果您只对最后一个值感兴趣

=LOOKUP(2,1/(Sheet1!3:3<>""),Sheet1!3:3)

也足够了。但这仅返回值,而不是引用。

在这种情况下,数组公式的优缺点:

亲:它的工作方式就像记录在案的一样。(Sheet1!3:3<>"") 返回 TRUE 或 FALSE 并且 TRUE * COLUMN(Sheet1!3:3) 得到 COLUMN(Sheet1!3:3) 而 FALSE * COLUMN(Sheet1!3:3) 得到 0。所以然后 MAX 是最大的列号,其中 (Sheet1!3:3<>"")。

缺点:速度很慢。在这种情况下并非不可用,因为我们只在一行中的所有单元格上工作。但是,如果我们将其应用于列中的所有单元格,那么它将变得无法使用。

于 2015-01-19T12:57:24.617 回答