在Excel中使用sumif的隐式数组
我想知道是否有可能使用隐式或“嵌套”数组的SUMIF函数。 对于“隐式”数组,我的意思是一个matrix,其中的数据不是电子表格中任何级别的最终forms,而是其他数组的function。 例如,假设我们有等级A1:A100中的一个自variables(其值,所有整数,范围从0到5)的数据,以及B1:B100中的因variables的数据。 有了SUMIF函数,我们可以很容易地计算,例如,独立variables为4时的因variables之和。但是如果我们想要知道因variables的SQUARES的总和,这并不容易,SUMIF函数给出如果我们写入SUMIF(A1:A100; 4; B1:B100 ^ 2),无论我们如何input它(作为数组或作为一个简单的公式),都会出错。
有没有什么办法可以做到这一点,而不必浪费列B值的平方整列?
我知道,就这个例子而言,函数SUMPRODUCT((A1:A100 = 4)* B1:B100 ^ 2)将完成这项工作,我不知道如何“嵌套”数组(这是非常有用的)一般。
恐怕答案是否定的。 COUNTIF(S)
/ SUMIF(S)
/ AVERAGEIF(S)
必须是:
1)对工作表范围的引用
2)parsing为引用工作表范围的构造
前者的一个例子是:
=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
比这一组SUMPRODUCT
有优势,因为可以通过不一定解决工作表范围的构造。
然而,正如你所build议的那样,通过首先在工作表中使用一个额外的列来计算正方形,然后在SUMIF
内引用该列,很有可能实现更高效的设置,特别是因为其中一个COUNTIF(S)
, SUMIF(s)
等可以对SUMPRODUCT
声明的主要优点是可以通过任意大的引用而不损害计算性能。 例如,性能之间的差异:
=SUMIF(A:A,"A",B:B)
和:
=SUMPRODUCT(0+(A:A="A"),B:B)
后者必须处理该范围内的所有1,048,576个细胞(无论技术上是否超出最后使用的细胞),这并不值得推荐。
问候