问题的格式示例,我需要生成第三行,即每个颜色块的总和:
我在非常大的数据集中发现了一组奇怪的列,而我又不擅长 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 Versions
MS365
. 为用户以及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:B13
IF()
• 或者,
使用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),"")
笔记:两种公式都需要向下填充,一旦我们得到了输出,我们就可以隐藏帮助专栏,附有截图。