A列中的数据如下所示。
RowHeaderThatIsText
RowHeaderThatIsNumber
空
空
空
空
空
14.00
-3.00
-4.00
项目目标是计算一系列数字的摘要统计数据,并每月更新摘要 我的目标是允许将新号码添加到系列中并自动更新摘要。
这是我到目前为止所做的。
使用公式11a定义名为 LastCell 的范围
=INDEX($A:$A, MAX(($A:$A <> "") * (ROW($A:$A))))
返回列中的最后一个非空单元格。要汇总的数据始终是最后一个数字块。
使用公式
来定义名为 HeaderOffset 的命名范围
=3
在步骤3中使用。
使用公式
定义名为 FirstCell 的范围
=OFFSET(LastCell, HeaderOffset - COUNTA($A:$A), 0)
这将返回最后一个数字块的第一个单元格,如果我将要汇总的数据的情况,则第一个和最后一个块之间的单元格为空。
使用公式
定义名为 DataBlock 的范围
=FirstCell:LastCell
到目前为止一切顺利。这允许人们将= SUM(DataBlock)输入任何单元格并获得7.00的预期结果。而且,如果我将另一个值(例如3.00)添加到列表中,则SUM结果将更新为10.
我不喜欢的部分是HeaderOffset。如果标题中添加了另一行,则需要将HeaderOffset从= 3更新为= 4。如果我忘记更新HeaderOffset怎么办?这引出了我目前无法解决的问题......
是否有一个Excel公式,给定结束单元格,返回数据块的起始单元格?基本上我正在寻找一个 FirstCell 公式,不再需要HeaderOffset。
作为奖励,我试图在不使用volatile Excel functions的情况下完成这一切。我使用OFFSET失败了。解决这个问题很棒。解决它没有易失性功能是理想的。
答案 0 :(得分:2)
FirstCell始终是第一个号码吗?如果是这样,试试这个来定义FirstCell
=INDEX($A:$A,MATCH(TRUE,ISNUMBER($A:$A),0))
如果在工作表上输入,则为“数组公式”,但如果在“引用:”框中使用以定义命名范围,则不需要任何特殊处理。
注意:如果您的最终目标是数字的总和,那么您可以使用=SUM(A:A)
[我认为这会过度简化问题吗?]
修改了以下评论:
试试LastCell
=INDEX($A:$A,MATCH(9.99E+307,$A:$A))
和FirstCell的这个
=INDEX($A:$A,MATCH(2,1/($A$1:LastCell=""))+1)
假设LastCell是数字(尽管可以根据需要更改)