【问题标题】:array based sumif in excel by formula通过公式在excel中基于数组的sumif
【发布时间】:2020-06-29 03:56:28
【问题描述】:

所以我试图在 excel 中找到一些 sumifs 的替代方法,其中每个条件都需要在 2D 范围而不是 1D 范围中检查。

例如,在下表中,我想要 A12 ("IJ") 存在于范围 A2:C8 (P)、B12 ("NM") 存在于范围内的行的 V 列中的值的总和D2:F8 (S) 和 C12 ("XX") 出现在 G2:I8 (A) 范围内

我正在尝试找到一个涉及基于数组的公式(没有 VBA)的解决方案。 例如在下面给出的公式中, SUMPRODUCT((B2:B8'=A12)*J2:J8) 将给出一个基于数组的计算如下

SUMPRODUCT({TRUE;FALSE;TRUE;FALSE;FALSE;TRUE;FALSE}*{22;79;45;67;43;72;52}) 
= SUMPRODUCT({22;0;45;0;0;72;0})
=139

当只需要检查一个条件时很容易,但是像sumifs一样,我打算检查多个条件,但是一旦我添加其他条件,数组就会变成多维并给出错误的答案。

例子:

SUMPRODUCT((A2:C8=A12)*(D2:F8=B12)*J2:J8) 分解为

=SUMPRODUCT(
{FALSE,TRUE,FALSE;FALSE,FALSE,FALSE;FALSE,TRUE,FALSE;FALSE,FALSE,FALSE;FALSE,FALSE,FALSE;FALSE,TRUE,FALSE;FALSE,FALSE,FALSE}*
{TRUE,FALSE,FALSE;FALSE,FALSE,FALSE;TRUE,FALSE,FALSE;FALSE,FALSE,FALSE;FALSE,FALSE,FALSE;TRUE,FALSE,FALSE;FALSE,FALSE,FALSE}
*J2:J8)  

在后台发生了什么(例如第三行)

SUMPRODUCT( ({FALSE, TRUE ,FALSE} * {TRUE,FALSE,FALSE}) * 45 )

= SUMPRODUCT({FALSE,FALSE,FALSE} *45 )

=0


SUMPRODUCT(({FALSE,TRUE ,FALSE} + {TRUE,FALSE,FALSE}) * 45 )

= SUMPRODUCT({TRUE,TRUE,FALSE} *45 )

= 90

#expected answer =45

有人可以帮助我了解我哪里出错或我缺少什么吗?

如果有任何其他方式,那么总是欢迎提出建议。

请注意,这是一个虚拟数据,实际数据非常大,每个标题 (P,S,A) 分别有 10 列中的值,行数也非常大。

【问题讨论】:

  • BIG DATA 的数组公式要求解决性能问题。这不是您的公式中断的原因,而只是提醒一下。 VBA 将是一个更好的途径。
  • 在您的示例图片中,您真正想要的总数是 117 而不是 88,对吧?
  • @Excel Hero,是的,我知道但对使用 VBA 有限制,其次,在图片中没有检查三个条件,即 A (G:I) 的偶数范围也被检查用于计算。
  • 这三个条件的V之和为117:P=IJ, S=NM, A=XX
  • @Excel Hero .. 是的,你是对的 .. 对不起,我的错.. 目前无法编辑它.. 但会进行更正

标签: arrays excel sumifs


【解决方案1】:

试试这个...

=SUMPRODUCT( ((A2:A8=A12)+(B2:B8=A12)+(C2:C8=A12)) * ((D2:D8=B12)+(E2:E8=B12)+(F2:F8=B12)) * ((G2:G8=C12)+(H2:H8=C12)+(I2:I8=C12)) * J2:J8 )

要使 SUMPRODUCT 起作用,布尔数组的形状需要与您希望有条件求和的数组的形状相匹配。

J2:J8 是七行高一列宽。

上面的公式根据您的三个条件范围创建一个由 1 和 0 组成的数组,并将其调整为七行高一列宽。

此时,SUMPRODUCT 可以正常工作,因为条件数组与 sum 数组 J2:J8 的维度匹配。

【讨论】:

  • 这对你有用吗?我要睡觉了。请告诉我。
  • 我知道这行得通,但如前所述,有很多标题(6-8),每个标题有 9-10 列..这个公式会变得非常非常大。
  • 我已经在演示中认为它可以工作,但对于我的实际问题,它不会......现在没有选择
猜你喜欢
  • 1970-01-01
  • 2017-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-20
  • 1970-01-01
相关资源
最近更新 更多