如何在没有严格引用列边界的情况下对表格的行进行求和

如何在没有严格引用列边界的情况下对表格的行进行求和

我有一张表,其中“item”列包含一个字符串,还有几列表示一年中不同月份在该项目上花费的金额,如下所示:

物品 二月
第一的 10 20
第二 三十五 3
第三 70 17

然后我有第二个表来计算每一行的总数,如下所示:

物品 全部的
第一的 三十
第二 三十八
第三 87

但是,我无法让第二张表正确地将它们加起来。我意识到我可以很容易地通过制作 Table2 的每个单元格=SUM(B2:C2)或类似的东西并将其扩展到其他行来实现这一点。问题是 1) 我想使用结构化引用,2) 我不知道我将使用这张表多少个月,所以我想在它们经过时添加一个月,并且我不想每个月都调整公式。我有几对这样的表格。

解决第一个问题时,我有一个想法,那就是这个公式: =SUMIF(Table1[ITEM], [@ITEM], Table1[[Jan]:[Feb]]) 如果项目标签相同,则对行进行求和。但是,当我添加三月列时,我必须调整公式,而这并不是我想要的。

解决第二个问题的类似想法是这个公式: =SUMIF(Table1[ITEM], [@ITEM], Table1) 这个想法是将整行(包括 ITEM 列)相加(但只将字符串视为 0)。但这不起作用,由于某种原因,每行的总和都为 0。我认为字符串以某种方式弄乱了它。

另一个想法是向 Table1 添加“总计”列并将所有内容保存在一个表中,但我无法在没有循环引用的情况下对整行求和。同样​​,指定列范围意味着每月调整公式。

答案1

您可以使用 INDEX 返回完整行:

=SUM(INDEX(Table1,ROW($ZZ1),0))

在此处输入图片描述

现在,当它填满时,它将改变返回哪一行。

我们可以换成ROW($ZZ1)MATCH 而不必担心顺序:

=SUM(INDEX(Table1,MATCH([@Item],Table1[Item],0),0))

在此处输入图片描述

如您所见,两者都没有引用列范围(MATCH 除外),允许在表 1 中添加列,并且它会自动调整。

答案2

您可以使用以下方法对每一行进行求和:

=SUM(Table1[@])

如果您使用它并从中减去 Item 列,它将满足您的需要:

=SUM(Table1[@]) - Table1[@Item]

实际上,只要保证 Item 列中没有数字输入,甚至不会出现拼写错误,您只需要第一个部分。但为了安全起见... 这适用于使用,INDEX()因此它是非竞争性的,但有利于稳健性。

INDEX()通过添加结构化引用,而不是尽可能完全依赖它们,从而摆脱结构化引用。效果很好,但从概念上讲,如果坚持结构化引用的想法,虽然不像使用单元格引用代替相应的结构化引用那么离谱,但它仍然背离了这个想法。

此外,它还增加了结构化引用所不具备的复杂性,因为它不是一个函数。(就其本身而言。在某种程度上,它有点像,是吧?)

然而,它之所以能获胜是因为它简单,这在结构化引用中实际上是极其罕见的。

答案3

简单方法:添加一个不包含任何内容的最后一列,例如名为“不使用”,然后您可以将最后一列包含在从 1 月到 [结束] 的范围内。当您在 2 月和此列之间插入 3 月时,您的公式仍然有效。

相关内容