当一行中的标识数据发生变化时,如何让 SUMIFS 重新开始?(按“组”求和)

当一行中的标识数据发生变化时,如何让 SUMIFS 重新开始?(按“组”求和)

目前,SUMIFS 可按预期计算 200,000 多行。有一个我无法理解的例外情况,即当 10 行的数据相同时,第 11 行会发生变化,然后第 12 行到第 21 行包含与前 10 行相同的数据。SUMIFS 会给出所有 20 个“类似”行的数量,而不是为每 10 行提供两个单独的总计。目标是在不拆分电子表格的情况下拆分数量。Excel 工作表示例

答案1

可能由于文件大小的原因并不理想,但任何解决方案都会在一定程度上受到影响。

使用两个辅助列,一个用于自上而下地保持累计总数,另一个用于自下而上地保持累计总数。假设 I 列是您确定的构成“组”的列,并且 K 列包含相关数量,我将使用 X 和 Y 作为辅助列。在 X1 中输入 0(零),然后在 X2 中输入,以保持当前组的累计总数:

=K2+X1*(I2=I1)

这将获取当前值并将上面的累计总数添加到其中,但前提是 ID 匹配,否则从当前数量重新开始。Y2 中类似,但略有不同:

=(K3+Y3)*(I2=I3)

如果 ID 匹配,则将下面的数量添加到下面的累计总数中,否则从零开始。将两个公式复制到 X 列和 Y 列。Y1 可以具有任何您喜欢的标签。

现在,这个神奇之处在于,该组的数量是这两个总数的总和,因为计数方向相反,并且有一行的偏移,所以你不会重复计算任何东西。此外,当你添加更多数据时,它们可以被复制下来。在你想要保存最终总数的任何列中输入一个简单的 =SUM(X2:Y2) 公式。

这种方法的缺点是,这里有一个巨大的依赖关系树,因此当单个值发生变化时,所有内容都会像满屋子的多米诺骨牌一样重新计算。如果这成为一件大事,您可以在对数据进行大量更改的同时复制并粘贴除 X 和 Y 的顶行之外的所有值,然后将其复制到底部并在计算时去散步/喝咖啡/喝啤酒。然后再次粘贴值。

我通常不喜欢需要以特定方式对数据进行排序的解决方案,但这似乎是您的数据唯一有意义的方式,因为它是非常有层次的,所以我不太担心它会在这种特定情况下以另一种方式排序。

相关内容