是否有Excel公式,给定结束单元格,返回数据块的起始单元格?

时间:2012-03-22 20:12:27

标签: excel excel-formula

A列中的数据如下所示。

RowHeaderThatIsText
RowHeaderThatIsNumber





14.00
-3.00
-4.00

项目目标是计算一系列数字的摘要统计数据,并每月更新摘要 我的目标是允许将新号码添加到系列中并自动更新摘要。

这是我到目前为止所做的。

  1. 使用公式11a定义名为 LastCell 的范围 =INDEX($A:$A, MAX(($A:$A <> "") * (ROW($A:$A))))
    返回列中的最后一个非空单元格。要汇总的数据始终是最后一个数字块。

  2. 使用公式
    来定义名为 HeaderOffset 的命名范围 =3
    在步骤3中使用。

  3. 使用公式
    定义名为 FirstCell 的范围 =OFFSET(LastCell, HeaderOffset - COUNTA($A:$A), 0)
    这将返回最后一个数字块的第一个单元格,如果我将要汇总的数据的情况,则第一个和最后一个块之间的单元格为空。

  4. 使用公式
    定义名为 DataBlock 的范围 =FirstCell:LastCell

  5. 到目前为止一切顺利。这允许人们将= SUM(DataBlock)输入任何单元格并获得7.00的预期结果。而且,如果我将另一个值(例如3.00)添加到列表中,则SUM结果将更新为10.

    我不喜欢的部分是HeaderOffset。如果标题中添加了另一行,则需要将HeaderOffset从= 3更新为= 4。如果我忘记更新HeaderOffset怎么办?这引出了我目前无法解决的问题......

    是否有一个Excel公式,给定结束单元格,返回数据块的起始单元格?基本上我正在寻找一个 FirstCell 公式,不再需要HeaderOffset。

    作为奖励,我试图在不使用volatile Excel functions的情况下完成这一切。我使用OFFSET失败了。解决这个问题很棒。解决它没有易失性功能是理想的。

1 个答案:

答案 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是数字(尽管可以根据需要更改)