2012-03-22 52 views
1

在A列中的数据看起来是这样的。是否有一个Excel公式,给定结尾单元格,返回数据块的起始单元格?

RowHeaderThatIsText
RowHeaderThatIsNumber





14.00
-3.00
-4.00

项目目标是计算一系列数字的汇总统计并每月更新汇总。
我的目标是允许添加到该系列中的新号码并自动汇总更新。

这是我到目前为止已经完成。

  1. 定义名为LastCell范围与式
    =INDEX($A:$A, MAX(($A:$A <> "") * (ROW($A:$A))))
    这将返回该列中的最后非空单元格。总结的数据总是最后一个数字块。

  2. 定义名为HeaderOffset命名范围与式
    =3
    用在步骤3

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

  4. 定义一个名为数据块范围与公式
    =FirstCell:LastCell

到目前为止好。这允许输入= SUM(DataBlock)到任何单元格并获得预期的结果7.00。而且,如果我添加其他值,比如3.00,到列表和结果都将更新为10

我不喜欢的部分是HeaderOffset。如果另一行添加到标题中,HeaderOffset需要从= 3更新为= 4。如果我忘记更新HeaderOffset会怎么样?这使我我目前还不能解决问题...

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

作为奖励,我试图做到这一点,而不使用volatile Excel functions。我失败了使用OFFSET。解决这个问题非常好。解决它没有挥发性功能是理想的。

+0

有什么错'= SUM($ A:$ A)'或数据块定义为'= $ A:$ A'?你真的需要在标题中使用数字吗? – Aprillion 2012-03-22 21:15:53

+0

是的。其中一个标题列是一个数字,它确实需要这样。 – GollyJer 2012-03-22 21:40:13

回答

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是数字(尽管如果需要可以改变)

+0

嗨巴里。感谢你的回答。不,FirstCell不是第一个数字,因为头部包含一个数字。我已经相应地更新了示例数据。是的,= SUM(A:A)过于简单化了,但我认为这个问题得到了解决。 :-) – GollyJer 2012-03-22 21:45:15

+0

确定@GollyJer,我用一种新方法编辑了我的答案..... – 2012-03-22 23:44:00

+0

巴里,这是一种非常聪明的方式来为INDEX提供一个有用的数组。谢谢!我将你的答案标记为已接受,但如果你不介意我有几个后续问题。 1)是否有理由使用您的答案中的LastCell公式与我的问题中的LastCell公式? 2)是否有一个原因,你使用**匹配(2,**而不是**匹配(1,**? 再次感谢。 – GollyJer 2012-03-23 04:24:52

相关问题