|-----+-----+
1 | A | B |
|-----+-----+
2 | Num | Sum |
3 | 1 | 1 |
4 | 2 | 3 |
5 | 3 | 6 |
6 | 4 | 10 |
7 | 5 | 15 |
8 | 6 | 21 |
|-----+-----+
本例中我们将标记放在“B6”上
如果这是 Excel 中的一个表格,并且我想从“B3 - B6”中选择行,那么有没有办法使用表格引用自动完成此操作?
我只发现 [@Sum] 选择当前行中的行,它会选择(B6)。
您还可以使用[Sum]选择当前列中的每一行,因此它将选择“B3 - B8”
但是,如果我想选择我上方“B6 - B3”的每一行,或者我下方“B6 - B8”的每一行,该怎么办?
其余一切似乎都是可能的,并且手动完成需要花费大量时间。
答案1
我将您的问题解释为如何使用结构化引用创建公式来完成例如累计总计。
可能还有其他方法,但您可以使用该INDEX
函数。
例如,要在SUM
列中显示累计总数(假设NUM
&SUM
是标题):
B3: =SUM(INDEX([Num],1):[@Num])
并且,对于反向操作(从下往上添加):
=SUM(INDEX([Num],COUNT([Num])):[@Num])
在上面的公式中,请注意函数column_num
的参数INDEX
(可选,只有一列)已被省略。
对于从当前行到某些前一行或后一行(不是第一行或最后一行)的其他变体,您可以使用该INDEX
函数的其他变体。
考虑到您的真实示例以及插入额外列的愿望,您仍然使用公式的变体SUM(INDEX(…
,但您需要将列引用转换为绝对引用,并且0
如果帐户不匹配标头排。
因此,根据示例表,您可以使用以下公式
E2: =SUM(INDEX((Table1[[Account]:[Account]]=Table1[[#Headers],[Home]])*Table1[[Transaction]:[Transaction]],N(IF(1,SEQUENCE(ROW()-ROW(Table1[#Headers]),,1,1)))))
并填充至但不包括总计列
如果您随后选择并点击Enter第 2 行中的每个公式,它将填充该列的其余部分。
*如果您没有该SEQUENCE
函数并且公式返回#NAME!
错误,请尝试:
=SUM(INDEX((Table1[[Account]:[Account]]=Table1[[#Headers],[Saved]])*Table1[[Transaction]:[Transaction]],N(IF(1,ROW(INDEX($A:$A,1,1):INDEX($A:$A,ROW()-ROW(Table1[#Headers])))))))
对于总计列,这是未经过滤的总计
=SUM(INDEX(Table1[[Transaction]:[Transaction]],1):Table1[@[Transaction]:[Transaction]])
- 由于我们使用的是绝对引用,因此当您插入列时,引用不会改变。
- 因为该
Total
列的公式与其他列不同,并且位于表格的末尾,所以如果您想添加帐户列,则需要插入它们,而不是将它们添加到末尾。