【问题标题】:Get the column number of the last non-empty cell within a range (if values are not unique)获取范围内最后一个非空单元格的列号(如果值不唯一)
【发布时间】:2019-09-10 15:47:44
【问题描述】:

我有以下 Excel 电子表格:

     A  B  C    D       E       F       G      H     I      J     
1
2
3
4              200     150     80     300                   4
5              200     150     80     150                   2
6
7

J4:J5 范围内,我有以下公式:

J4 = MATCH(LOOKUP(2,1/(D4:I4<>0),D4:I4),D4:I4,0)
J5 = MATCH(LOOKUP(2,1/(D4:I4<>0),D4:I4),D4:I4,0)

通过这个公式,我想识别范围内的最后一个非空单元格并获取它的列号。所有这些都在Cell J4 中完美运行。

但是,在 Cell J5 中,我返回的是 number 2 而不是 number 4。据我所知,原因是在 Range D5:I5 中的值不是唯一的(150 出现两次)。

无论值是否唯一,我需要在公式中进行哪些更改才能始终获取最后一个非空单元格的列号?

this 问题的答案没有帮助,因为我的范围不是从Column A 开始的。
范围可以是工作表上的任何位置。

【问题讨论】:

  • 您的数据中是否存在空白?说,200,150,,300。这些实际上是公式结果还是只是键入的值?

标签: excel excel-formula


【解决方案1】:

或者,您可以按如下方式调整现有的LOOKUP 函数:

=LOOKUP(2,1/(D4:I4<>0),COLUMN(D4:I4)-MIN(COLUMN(D4:I4))+1)

【讨论】:

  • 感谢贾斯蒂娜的回答。我认为这个公式的好处是它甚至可以在范围内有单词的情况下工作。
  • 没错,它也会正确识别这些。感谢您的关注!
  • 如果你想从中排除非数字值,你可以使用 Scott 的解决方案:=MATCH(1E+99,D4:I4)
  • 我唯一要做的就是用-MIN(COLUMN(D4:I4))+1 替换-3 然后如果范围发生变化,用户不需要进行数学运算,只需更改范围以匹配其余部分。
【解决方案2】:

你只需要 MATCH:

=MATCH(1E+99,D4:I4)

如果您正在寻找文本,那么:

=MATCH("zzz",D4:I4)

或者:

=MAX(IFERROR(MATCH(1E+99,D4:I4),0),IFERROR(MATCH("zzz",D4:I4),0))


问题是 LOOKUP 返回实际值,如果出现错误,它会返回 150 给 MATCH:

MATCH(150,D4:I4,0)

这将返回第一个匹配位置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-28
    • 1970-01-01
    相关资源
    最近更新 更多