我有一张表,其中“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
答案2
您可以使用以下方法对每一行进行求和:
=SUM(Table1[@])
如果您使用它并从中减去 Item 列,它将满足您的需要:
=SUM(Table1[@]) - Table1[@Item]
实际上,只要保证 Item 列中没有数字输入,甚至不会出现拼写错误,您只需要第一个部分。但为了安全起见... 这适用于使用,INDEX()
因此它是非竞争性的,但有利于稳健性。
INDEX()
通过添加结构化引用,而不是尽可能完全依赖它们,从而摆脱结构化引用。效果很好,但从概念上讲,如果坚持结构化引用的想法,虽然不像使用单元格引用代替相应的结构化引用那么离谱,但它仍然背离了这个想法。
此外,它还增加了结构化引用所不具备的复杂性,因为它不是一个函数。(就其本身而言。在某种程度上,它有点像,是吧?)
然而,它之所以能获胜是因为它简单,这在结构化引用中实际上是极其罕见的。
答案3
简单方法:添加一个不包含任何内容的最后一列,例如名为“不使用”,然后您可以将最后一列包含在从 1 月到 [结束] 的范围内。当您在 2 月和此列之间插入 3 月时,您的公式仍然有效。