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

我有以下Excel电子表格:

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

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

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

如果第二行中的所有数字都是唯一的,那么这个公式完美地工作 然而,在我上面的例子中,你可以看到,在Februay的利润等于March的利润; 因此,上面的公式给出了地址C2而不是D2

在我的公式中,我必须改变什么来总是得到最后一个非空单元的地址,而不pipe它是否唯一?

使用:

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

在这里输入图像说明

考虑:

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

在这里输入图像说明

注意:

  1. 将处理文本或数字,唯一或不
  2. 不是一个数组公式
  3. 数据必须紧凑….没有中间空虚

最后一个限制是重要的,因为公式依赖于find行中的第一个空,并退一步!

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

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

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

注意这是一个数组公式,所以你在input这个公式时按下键盘上的Ctrl + Shift + Enter键而不是按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)))))