【问题标题】:Better formula for multiple sumproducts多个 sumproducts 的更好公式
【发布时间】:2017-09-25 04:32:41
【问题描述】:

我在“A1:E3”范围内有以下数据

1   2   12  25  30
3   13  23  28  31
5   14  17  18  35

我需要找出每行中有多少个数字在 1 到 10 的范围内。例如。第 1 行有 2 个 1 到 10 范围内的数字,第 2 行只有 1,第 3 行有 1,所以总数为 2+1+1=4。同样,我需要找出每行有多少个数字落在 11 到 20、21 到 30 和 31 到 40 的范围内。我写了一个 sumproduct 公式,并通过更改范围将其添加了两次。

1   to  10  4
11  to  20  5
21  to  30  4
31  to  40  2

我在范围 G1:J4 中有上述日期,其中 J 列有以下公式,该公式被拉低 2 行。

=SUMPRODUCT((A$1:E$1>=G1)*(A$1:E$1<=I1))+SUMPRODUCT((A$2:E$2>=G1)*(A$2:E$2<=I1))+SUMPRODUCT((A$3:E$3>=G1)*(A$3:E$3<=I1))

当我的行数增加时,公式会越来越大。谁能为此提出一个更好的公式?

谢谢

【问题讨论】:

  • 你真的不需要为每一行单独的 SUMPRODUCT 函数,这将工作=SUMPRODUCT((A$1:E$3&gt;=G1)*(A$1:E$3&lt;=I1)),并且可以扩展到任意数量的行

标签: excel excel-formula excel-2010 excel-2007


【解决方案1】:

频率公式是专门针对此类问题构建的。在我的工作表中,我突出显示了“C8:C11”范围,我用 CTRL + Shift + Enter 输入了这个公式:

=FREQUENCY(A1:E3,B8:B11)

【讨论】:

  • 我的第一个答案是正确的,但是当我下拉时,范围也会改变并且没有得到正确的结果。在您的解决方案中,我看到以下所有四个单元格都使用了相同的公式...
  • 您不会向下拖动范围。如前所述,我突出显示范围“C8:C11”,然后输入公式。换句话说,在数组输入公式之前,您必须突出显示要放置公式的所有单元格。
  • 哦!我误解了。今天我学到了一些新东西。谢谢哥们...上帝保佑!
  • 我正在努力寻找类似问题的解决方案,如果我不成功,我会很快在这里发布。请看一下。谢谢
【解决方案2】:

在 G2:I5 中设置您的标准表,让我们在 A1:E3 中使用您的数据

选项 1 计数

在J2中使用公式:

=COUNTIF(A1:E3,"<="&I2)

在J3中并抄下来使用:

=COUNTIF($A$1:$E$3,"<="&I3)-SUM($J$2:J2)

或者,如果您知道 J1 在您的情况下将为空白,您可以在 J2 中使用以下内容并根据需要复制下来

=COUNTIF($A$1:$E$3,"<="&I2)-SUM($J$1:J1)

警告:因为我没有进行下边界检查,所以所有小于 1 的值,即 0、-3、0.34 都将计入 1-10 范围内。此选项是在您查找大于 0 的整数的假设下完成的。

选项 II 计数

使用 COUNTIFS 为每个测试范围设置边界

在 J2 中使用以下内容并复制下来:

=COUNTIFS($A$1:$E$3,">="&$G2,$A$1:$E$3,"<="&$I2)

【讨论】:

    【解决方案3】:

    因为您想了解数字在 10 个 (0~10,11~20,..) 的 bin 中的分布情况。最好将标题行专门用于形成 bin 限制,然后使用可以向右和向下拖动的公式 - 这个 SUMPRODUCT 公式可以发挥作用:

    =SUMPRODUCT((($A3:$D3>=1*E$1)*($A3:$D3<=E$2))*1)
    

    这是实现的结果。

    箱和数据之间的区域给出了数字的分布。

    【讨论】:

      猜你喜欢
      • 2014-10-23
      • 1970-01-01
      • 1970-01-01
      • 2013-10-26
      • 1970-01-01
      • 1970-01-01
      • 2013-12-22
      • 1970-01-01
      相关资源
      最近更新 更多