我发现以下公式在您在 Excel 的同一张工作表中搜索时效果很好。因此,当我希望 excel 返回第 3 行中的最后一个值时,此公式有效。
={INDIRECT(ADDRESS(3,MAX((3:3<>"")*COLUMN(3:3)),1))}
当我希望 excel 返回不同工作表的第 3 行中的最后一个值时,我很难使用它。任何人都可以帮忙吗?
谢谢 反相
我发现以下公式在您在 Excel 的同一张工作表中搜索时效果很好。因此,当我希望 excel 返回第 3 行中的最后一个值时,此公式有效。
={INDIRECT(ADDRESS(3,MAX((3:3<>"")*COLUMN(3:3)),1))}
当我希望 excel 返回不同工作表的第 3 行中的最后一个值时,我很难使用它。任何人都可以帮忙吗?
谢谢 反相
在这种情况下不需要 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<>"")。
缺点:速度很慢。在这种情况下并非不可用,因为我们只在一行中的所有单元格上工作。但是,如果我们将其应用于列中的所有单元格,那么它将变得无法使用。