我正在寻找一种使用Excel表格结构引用创建一个累加总和(当前行及以上行的总和)的方法。
我知道如何使用旧的基于行/列的方法来实现:
=SUM($A$2:$A2)
我也知道如何使用结构引用来计算整个列的总和:
=SUM([WTaskUnits])
我知道如何使用[#ThisRow]
获取当前单元格,但我不确定如何获取表格的第一行以在SUM
中使用它。
我正在寻找一种使用Excel表格结构引用创建一个累加总和(当前行及以上行的总和)的方法。
我知道如何使用旧的基于行/列的方法来实现:
=SUM($A$2:$A2)
我也知道如何使用结构引用来计算整个列的总和:
=SUM([WTaskUnits])
我知道如何使用[#ThisRow]
获取当前单元格,但我不确定如何获取表格的第一行以在SUM
中使用它。
实际上,我只是发现了一种使用INDEX的方法,但感觉应该有更加结构化和规范的引用方式。不过,对于其他人想要实现这个功能的话,下面是我想出来的方法:
=SUM(INDEX([WTaskUnits],1):[[#This Row],[WTaskUnits]])
我使用INDEX获取列的第一个单元格(相当于我的行/列示例中的$A$2),并正常使用[#This Row]获取当前行的单元格(相当于我的行/列示例中的A2)。
=IF(ISNUMBER(OFFSET([@Balance],-1,0)),OFFSET([@Balance],-1,0)+[@Amount],[@Amount])
在第一行数据实例中,偏移量指向标题,而标题并不是一个数字,因此结果只有 Amount
列。
其余的行给出了从 OFFSET
加上当前行的 Amount
的前一个 Balance
。
=SUM(OFFSET([WTaskUnits],0,0,ROW()-ROW([[#Headers],[Running Total]])))
ROW()-ROW([[#Headers],[Running Total]]
是一个有用的习语,用于表示表格中当前行的编号。
请注意,如果您使用的是 =SUBTOTAL(109,...) 而不是 =SUM(...),则您的公式将遵守表格上的筛选。
=SUM( INDEX([Values],1) : [@Values] )
不确定您所说的“更有结构”,您现在的做法也很好。您还可以简单地从表头下面的单元格开始设置范围:
OFFSET([[#Headers],[WTaskUnits]],1,0,1,1):
但我不会称之为更有结构化,只是不同而已。在列的部分行范围内没有表格参考,所以我的建议是坚持你现在所拥有的。
我使用 Excel 的数据透视表创建了我的累计总数:
我的两分钱,迟到了五年(也许错过了重点)。
对于一个固定的数据表: 1. 转到您想要进行小计的列中的最后一个单元格 2. 对包含数据的列进行小计并绝对引用第一行 3. 将公式复制到第一行