【发布时间】:2019-09-25 13:29:58
【问题描述】:
我有以下 Excel 电子表格:
A B C D E F G H I J K L
1
2
3
4 600 150 80 600 0 0 4
5 200 150 80 80 0 0 4
6
7
在K4:K5 范围内,我目前使用this 问题中的公式来识别该范围内的最后一个非空单元格并取回它的列号:
K4 = LOOKUP(2,1/(D4:J4<>0),COLUMN(D4:J4)-MIN(COLUMN(D4:J4))+1)
K5 = LOOKUP(2,1/(D5:J5<>0),COLUMN(D5:J5)-MIN(COLUMN(D5:J5))+1)
这个公式适用于上面的简单示例。但是,一旦我在更大的电子表格中使用此公式,就会遇到很多性能问题,而且数字并不总是正确更新。
因此,我想知道是否有替代公式来获取最后一个非空单元格的列号,无论值是否唯一?
【问题讨论】:
-
试试这个,不知道是不是比LOOKUP快:
=AGGREGATE(14,7,(COLUMN(D4:J4)-MIN(COLUMN(D4:J4))+1)/(D4:J4>0),1) -
感谢 Scott 提供这个替代解决方案。如果我想提取最后一个非空单元格的值而不是列号怎么办。有更简单的解决方案吗?
-
使用 INDEX():
=INDEX(D4:J4,AGGREGATE(14,7,(COLUMN(D4:J4)-MIN(COLUMN(D4:J4))+1)/(D4:J4>0),1)但我们可以将其简化为=INDEX(A4:J4,AGGREGATE(14,7,COLUMN(D4:J4)/(D4:J4>0),1) -
聚合对你有用吗?只是好奇它是否比查找解决得更快。
-
在这种情况下,您可以使用我给您的任何答案here。只需将条件更改为:
D3:I3>0,或您使用的任何范围
标签: excel excel-formula