SUM 在单列中选择不同长度的范围,使用第二列中的空/非空值来决定 Excel 公式中的 SUM 索引

SUM 在单列中选择不同长度的范围,使用第二列中的空/非空值来决定 Excel 公式中的 SUM 索引

问题的格式示例,我需要生成第三行,即每个颜色块的总和:

我在非常大的数据集中发现了一组奇怪的列,而我又不擅长 Excel。我可能完全搞错了,但有一个简单的方法可以解决此问题。

我需要一个公式来填充 C 列,该公式会生成图像中 C 列显示的值。逻辑应该是这样的(粗略的伪代码):

If A2 is equal to "":
     C2 == ""
     If A2 does not equal "":
          while cells in col[A] greater than A2 are equal to "":
              C2 += B2...B3...B4 etc.
              if cell in col[A] greater than A2 does not equal "":
                   break

每当公式在 A 列中遇到非空值时,它就应该对 B 列求和,直到在 A 列中找到新的非空值,此时它应该丢失旧的总和并重新开始操作。

我尝试过类似以下公式的变化:

=IF(A2 = "", "", SUM(B2:INDEX(MATCH()))

但是我根本无法让INDEX(MATCH())组合根据 A 列中的值返回适当的单元格值(在我的示例中,返回的第一个表示范围结束的索引应该是 B5)。

答案1

有很多方法可以做到这一点,以下发布的解决方案取决于具体方法Excel VersionsMS365. 为用户以及Excel 2010+更高级别的用户显示的方法。

• 使用MS365函数 --> LET(), SCAN(), TOCOL()& 当然MMULT()--方法一

在此处输入图片描述

• 单元格中使用的公式C2

=LET(
     α, A2:A13,
     δ, SCAN(,α,LAMBDA(r,c,IF(c="",r,c))),
     IF(α, MMULT(N(TOROW(δ)=δ),B2:B13),""))

  • α-- 用于保存第一列的整个范围的变量。
  • δ-- 使用函数用上述值填充空白行的变量SCAN()-->SCAN(,α,LAMBDA(r,c,IF(c="",r,c)))
  • 最后,使用一个IF()函数来检查是否αTRUE,并执行,该MMULT()函数对两个矩阵执行矩阵乘法,使用&返回第二列的TOROW()变量,从而返回总和,当逻辑不符合标准时返回空白。δB2:B13IF()

• 或者,

使用SUMPRODUCT()&LOOKUP()功能 -- 适用Excel 2010+范围 --方法二

在此处输入图片描述


• 单元格中使用的公式C2--> 需要填充到其余单元格中。

=IF(A2,SUMPRODUCT(
       (LOOKUP(ROW(A$2:A$13),ROW(A$2:A$13)/
       (A$2:A$13<>""),A$2:A$13)=$A2)*$B$2:$B$13),"")

• 或者,方法三

然而,如果不愿意使用上述公式,可以选择使用帮手/辅助的列。

在此处输入图片描述


• 单元格中使用的公式C2

=IF(A2,A2,C1)

• 单元格中使用的公式D2

=IF($A2,SUMIFS(B$2:B$13,C$2:C$13,$A2),"")

笔记:两种公式都需要向下填充,一旦我们得到了输出,我们就可以隐藏帮助专栏,附有截图。


答案2

没有辅助列,公式简单。从 C 列的最后一个单元格开始,C13在此示例中为填充。

=IF(A13<>"",SUM(B13:B$13)-SUM(C14:C$14),"")  

求和块

相关内容