用于汇总列中最后十三行的公式

时间:2015-10-09 15:35:51

标签: excel excel-formula sum

我正在寻找一个公式,它将底部列中的最后十三行相加。我找到了:

=SUM(INDEX(R:R,MATCH(9.99999999999999E+307,R:R,1)):INDEX(R:R,MATCH(9.99999999999999E+307,R:R,1)-13,0)) 

并且它在大多数情况下都有效,除非最后十三行是空的enter image description here,它会添加最后十三个数字,从填入的最后一个值开始。这是一个例子:

an example

你可以看到第V列给出了7.4,因为它计算了最后的13个值 - 远远超过了最后的13个值。

如何让公式将空单元格评估为零,以便在V中为我提供0

3 个答案:

答案 0 :(得分:2)

SUM" N"最后一行数据

这是我对要求的理解:

DATA顶部有2行标题和其他2行总计,因此Excel Table不适用。

6:7持有TOTALS TO DATETOTALS LAST PAGETOTALS LAST PAGESUM的最后13行的DATA。因此,我们需要确定DATA的最后一行,而不是最后一行非空行。

此解决方案假定:

DATA位于C3:R38 范围内(根据需要进行调整),前4行为Header和Totals;数据详细信息从第7行开始。

为了能够计算DATA Last Row我们需要识别其最后一行单元格总是填充的字段(即它永远不会为空)。为了演示此解决方案,我假设此字段位于列C中。我们还假设我们需要添加总计的字段位于F:R

列中

此解决方案适用于以下三个工作单元

  1. DATA Last Row:此FormulaArray是添加多个列(+ 20个字段)TOTALS LAST PAGE公式的重要部分,因此拥有它只需在工作单元中执行一次,就可以减少执行工作簿计算所需的资源。
  2. 在单元格FormulaArray

    中输入此I2

    (按 [Ctrl] + [Shift] + [Enter] 同时)

    =MAX( (C:C <> "" ) * ROW(C:C) )
    
    1. Last Page Rows (来自用户的输入):位于E2,此工作单元格保存最后一页的行数(要向上添加的行数) DATA的最后一行。如果要添加的行数发生变化,它提供了更新结果的灵活性,而不是更改每个公式(+ 20个字段),用户只需在此单元格中输入新的行数
    2. 在单元格13

      中输入E2
      1. Last Rows to Add (calc) - 可选:用于计算要添加的单元格数。在DATA包含的行少于最后一页的预期行数的情况下,避免无休止的重复。虽然根据示例数据,这似乎是不太可能的情况,但仍然添加,因为它可能对具有类似情况的其他用户有用。 此工作单元格是可选的,因为如果未实现,则会提供替代公式。
      2. 在单元格M2

        中输入此公式
        =IF( $I$2 - $E$2 < ROW( $C$7 ), $I$2 - ROW( $C$7 ), $E$2 )
        

        现在要获取TOTALS LAST PAGE我们在单元格F6中输入其中一个公式并复制到范围G6:R6

        一个。已实施Last Rows to Add (calc)工作单元

        =SUM( OFFSET( INDEX(F:F, $I$2, 0 ), 0, 0, -$M$2 ))
        

        Last Rows to Add (calc)工作单元已实施

        =SUM( OFFSET( INDEX(F:F, $I$2, 0 ), 0, 0, -$E$2 ))
        

        Fig. 1

        总是添加最后13行数据,无论其内容如何

        enter image description here

        Last Rows to Add (calc)没有实施,DATA的记录少于13TOTALS LAST PAGE不准确,因为下面的总数也会添加

答案 1 :(得分:0)

似乎您正在寻找一种方法来确定列中最后一个非空行(并从那里倒数)的rownumber,以确定您的SUM()范围。如果您愿意添加辅助列和/或将数据格式化为table,则会有一些更简单的公式。 (请在评论中告诉我,如果是这样的话,我可以修改答案)。

不使用辅助细胞&amp;但是,您可以尝试以下方法将首都A更改为您选择的列=SUM(INDIRECT("A"&INDEX(ROW(A:A),MAX((A:A<>"")*(ROW(A:A))))&":A"&INDEX(ROW(A:A),MAX((A:A<>"")*(ROW(A:A))))-13))

说明:

  1. INDEX(ROW(A:A),MAX((A:A<>"")*(ROW(A:A))))确定A列中的最后一个非空行(归功于Doug Glancy)。这是一个array formula,必须用 ctrl + shift + 输入进行初始化,然后公式应用大括号{{包裹1}} ... {=SUM(
  2. )}允许您为INDIRECT()函数声明动态范围。 SUM()函数的内部参数求值为INDIRECT(),其中Ax:Ayx是第13行到最后一行和最后一行的行引用。
  3. 但是,如果问题是 正在跳过 目标列中的非空白单元 在列的末尾 < / em>,我想不出一个可读的单细胞公式可以允许这个。我建议设置一个辅助单元格,在其中放置一个公式来确定有效的单元格范围。命名此/这些单元格( alt + m + m + d 以显示指定的范围管理器),将允许您将语法更改为y,而不需要任何数组公式。

    希望这有帮助!

答案 2 :(得分:0)

对于我解释的要求,我建议在V112:

=SUM(OFFSET(V112,-13,0,13,1))  

如果需要,可以在不同的单元格中更改引用和行偏移量。