我有以下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
。
我必须更改公式始终获取最后一个非空单元格的地址,无论它是否唯一?
答案 0 :(得分:3)
考虑:
=ADDRESS(2,MATCH(TRUE,INDEX(ISBLANK(2:2),0,0),0)-1)
注:
最后一个限制非常重要,因为公式依赖于找到行中的第一个空格并退一步!
答案 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)
答案 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)))))
相反,请完全跳过使用INDIRECT
和ADDRESS
,而是使用INDEX
来获取该单元格中的值,即
= INDEX(2:2,MAX(COLUMN(2:2)*NOT(ISBLANK(2:2)))))