【问题标题】:Implicit array using sumif in ExcelExcel中使用sumif的隐式数组
【发布时间】:2016-11-26 07:06:24
【问题描述】:

我想知道是否可以将 SUMIF 函数与隐式或“嵌套”数组一起使用。对于“隐式”数组,我的意思是一个矩阵,其数据在电子表格的任何级别中都不是最终形式,但它是其他数组的函数。例如,假设我们在等级 A1:A100 中有一个自变量的数据(其值,所有整数,范围从 0 到 5),在 B1:B100 中有一个因变量的数据。使用 SUMIF 函数,我们可以很容易地计算,例如,当自变量为 4 时,因变量的和。但是如果我们想知道因变量的 SQUARES 的和,就不是那么容易了,事实上,SUMIF 函数给出了无论我们如何输入 SUMIF(A1:A100;4;B1:B100^2) 都会出错(作为数组或简单公式)。

有什么方法可以做到这一点,而不必为 B 列的值的平方浪费一整列?

我知道对于这个例子,函数 SUMPRODUCT((A1:A100=4)*B1:B100^2) 可以完成这项工作,我不知道如何“嵌套”数组(这是非常有用)一般。

【问题讨论】:

    标签: arrays excel nested statistics


    【解决方案1】:

    恐怕答案是否定的。 COUNTIF(S)/SUMIF(S)/AVERAGEIF(S) 中使用的范围必须是:

    1) 对工作表范围的引用

    2) 解析到对工作表范围的引用的构造

    前者的一个例子:

    =SUMIF(A1:A10,"A",B1:B10)

    以及后者中的两个(恰好与上面的相同):

    =SUMIF(A1:INDEX(A:A,10),"A",B1:INDEX(B:B,10))

    =SUM(SUMIF(OFFSET(A1,{0,1,2,3,4,5,6,7,8,9},),"A",OFFSET(B1,{0,1,2,3,4,5,6,7,8,9},)))

    这里SUMPRODUCT 比这组函数具有优势,因为可以传递不一定解析为工作表范围的构造。

    但是,按照您的建议,通过首先使用工作表中的附加列来计算平方,然后在 SUMIF 中引用该列,很可能实现更有效的设置,而不是至少,COUNTIF(S)SUMIF(s) 等相对于SUMPRODUCT 的主要优势之一是可以传递任意大的引用而不会损害计算性能。例如,以下之间的性能差异:

    =SUMIF(A:A,"A",B:B)

    和:

    =SUMPRODUCT(0+(A:A="A"),B:B)

    非常庞大,后者必须处理该范围内的所有 1,048,576 个单元格(无论它们在技术上是否超出了最后使用的单元格),根本不值得推荐。

    问候

    【讨论】:

      猜你喜欢
      • 2020-06-29
      • 2018-01-16
      • 1970-01-01
      • 2017-03-11
      • 2017-04-14
      • 1970-01-01
      • 2011-07-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多