excel - 基于子和条件的求和列

标签 excel excel-formula

所以我有一个基本上如下所示的表格:

Criterion  Value
1         -5
1          1
2          5
2          5
3          2
3         -1

我想根据 A 列中的条件对 B 列中的值求和,但前提是单个条件的总和不为负。因此,例如,如果我要求标准介于 1 和 3 之间的所有值的总和,则结果应为 11(标准 1 的值不包含在总和中,因为它们加起来为负数。

我的第一个想法是添加带有 sumif([criterion];[@criterion];[value]) 的第三列,然后使用 sumifs 函数检查第三列是否为负数。然而,我的表有超过 100k 行,并且有这么多 sumif 函数,它变得慢得难以忍受。

我知道我可以创建一个数据透视表来达到相同的效果,但这有两个缺点:我必须创建一个单独的工作表,这会增加复杂性,而且我的表经常更新,这意味着我必须手动更新每次都使用该数据透视表以允许下游计算。 NBD 和我可以将其作为最后的手段,但我想知道是否没有更优雅的方法来解决这个问题。

我希望避免使用 VBA 以避免复杂性(该工作表将被其他人使用)。

谢谢

最佳答案

使用 UNIQUE() 和 SUMIF() 的两个版本可以轻松完成此操作:

  1. 首先使用 =UNIQUE(A2:A7) 收集所有条件 -- 假设您的数据位于从第 2 行开始的 A 列和 B 列中,该数据位于单元格 C2 中,其中“条件”位于 C1 中
  2. 使用 =SUMIF($A$2:$A$7, C2, $B$2:$B$7) 计算所有条件的小计 -- 这会出现在单元格 D2 中,并按照单元格中的条件“部分”进行扩展D1
  3. 对第 2 步中的所有数据求和,在单元格 E2 中使用 =SUMIF(D2:D7, ">0") 得出正和

如果您有大量数据,我建议使用列引用以避免绝对引用以及需要随着数据变化(数量)调整公式:

  1. 第一个公式变为 =UNIQUE(A:A) -- 不关心所采用的标题(不会对字符串和空单元格求和)
  2. 对于第二个公式,请使用 =SUMIF(A:A, C2, B:B)
  3. 最后一步使用 =SUMIF(D:D, ">0")

这应该相当快,使用与不同标准数量相同数量的额外单元格(乘以 2)。

关于excel - 基于子和条件的求和列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62612176/

相关文章:

vba - 比较两个不同 Excel 工作表和工作簿中的列,然后将匹配值发布到另一列中

excel - 转换[h] :mm:ss to mm:ss in Excel

vba - Excel 按首字母过滤列中超过 2 个值

excel - 在 Excel 中,限制单元格范围内的字符总数(如 1000 个)

excel - Microsoft Excel 中根据百分比分配职位的公式是什么?

java - 使用什么代替 ApachePOI 中已弃用的 CellRangeAddress.valueOf

vba - 用于删除电话号码前导 1(如果存在)的 Excel 公式

Excel - 具有三个值的 If 条件

python - 将 Pandas .read_excel 数据框附加到新数据框

java - 如何将Excel中的值分组到HashMap