【问题标题】:Display the column number of the last non-empty cell within a range (if values are not unique)显示范围内最后一个非空单元格的列号(如果值不唯一)
【发布时间】: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&gt;0),1)
  • 感谢 Scott 提供这个替代解决方案。如果我想提取最后一个非空单元格的值而不是列号怎么办。有更简单的解决方案吗?
  • 使用 INDEX(): =INDEX(D4:J4,AGGREGATE(14,7,(COLUMN(D4:J4)-MIN(COLUMN(D4:J4))+1)/(D4:J4&gt;0),1) 但我们可以将其简化为 =INDEX(A4:J4,AGGREGATE(14,7,COLUMN(D4:J4)/(D4:J4&gt;0),1)
  • 聚合对你有用吗?只是好奇它是否比查找解决得更快。
  • 在这种情况下,您可以使用我给您的任何答案here。只需将条件更改为:D3:I3&gt;0,或您使用的任何范围

标签: excel excel-formula


【解决方案1】:

正如问题下方的 cmets 中已经描述的,可以使用以下解决方案:

选项 A)
如果要获取最后一个非空单元格的列号

=AGGREGATE(14,7,(COLUMN(D4:J4)-MIN(COLUMN(D4:J4))+1)/(D4:J4>0),1)

选项 B)
如果您想在最后一个非空单元格中获取

=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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-04
    • 2016-09-20
    • 2021-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多