显示最后一个非空单元格的地址(如果值不唯一)

时间:2017-10-30 13:20:58

标签: excel excel-formula

我有以下Excel电子表格:

             A                             B       C      D      E       F

1 |                                     |  Jan.   Feb.   March   April   May 
2 | Profit                              |   100    200    200    
3 | Cell Reference last non-empty cell  |   ??

第2行中,您可以找到每个月的利润。在单元格B3 中,我想在第2行中显示最后一个非空单元格的地址。为此,我尝试了以下公式:

=ADDRESS(ROW(B2),MATCH((IFERROR(LOOKUP(2,1/($A2:$F2<>0),$A2:$F2),0)),$A2:$F2,0),4,1)

如果第2行中的所有数字都唯一,则此公式可以正常运行。但是,在上面的示例中,您可以看到Februay中的利润等于March中的利润;因此,上面的公式为我提供了地址C2,而不是D2

我必须更改公式始终获取最后一个非空单元格的地址,无论它是否唯一?

3 个答案:

答案 0 :(得分:3)

考虑:

=ADDRESS(2,MATCH(TRUE,INDEX(ISBLANK(2:2),0,0),0)-1)

enter image description here

注:

  1. 将处理文字或数字,唯一或不是
  2. 不是数组公式
  3. 数据必须紧凑......中间没有空位
  4. 最后一个限制非常重要,因为公式依赖于找到行中的第一个空格并退一步!

答案 1 :(得分:2)

使用:

=ADDRESS(ROW(B2),MATCH(1E+99,$A2:$F2),4,1)

将返回包含该范围内数字的最后一个单元格。

对于文字和数字:

=ADDRESS(ROW(B2),MAX(IFERROR(MATCH(1E+99,$A2:$F2),0),IFERROR(MATCH("zzz",$A2:$F2),0)),4,1)

enter image description here

答案 2 :(得分:1)

您可以使用以下数组公式:

= ADDRESS(ROW(B2),MAX(COLUMN(2:2)*NOT(ISBLANK(2:2))))

这将返回第二行中最后一个非空单元格的地址。

请注意,这是一个数组公式,所以当你输入这个公式时,你可以在键盘上按 Ctrl + Shift + Enter 而不仅仅是按输入

我同意@ScottCraner认为返回地址通常并不有用。如果您打算使用此值,作为另一个公式的一部分,您应执行此操作:

= INDIRECT(ADDRESS(ROW(B2),MAX(COLUMN(2:2)*NOT(ISBLANK(2:2)))))

相反,请完全跳过使用INDIRECTADDRESS,而是使用INDEX来获取该单元格中的值,即

= INDEX(2:2,MAX(COLUMN(2:2)*NOT(ISBLANK(2:2)))))