嵌套数组公式

我想要一个汇率的总和。 让我解释一下:我想总结D列中匹配2个条件的数字(在Excel中是绿色的行)。 第一个:列F等于“封闭”。 第二个:列C等于那些符合以下条件的数字:列F等于“部分出售”。 与此同时,前面总和中的每个数字可能会被列F中与“部分销售”相匹配的列D的数量除以。附加的表格/数字I为例:(4510/9820)+(6500 / 9820)+(9100/15400)+(2388/2995)+(12400/9820)+(2904/5855)。 我的细胞将是:(D69 / D66)+(D70 / D66)+(D76 / D74)+(D82 / D78)+(D83 / D66)+(D84 / D72)。

(D6 / D3)+(D7 / D3)+(D13 / D11)+(D19 / D15)+(D20 / D3)+(D21 / D9)

.. CDEF 65 # Total Side Condition 66 1 9820 Buy Partial Sold 67 2 3850 Buy Closed 68 3 7151 Buy Partial Sold 69 1 4510 Sell Closed 70 1 6500 Sell Closed 71 4 8180 Buy Open 72 5 5855 Buy Partial Sold 73 6 2553 Buy Open 74 7 15400 Buy Partial Sold 75 2 4600 Sell Closed 76 7 9100 Sell Closed 77 8 7531 Buy Open 78 9 2995 Buy Partial Sold 79 3 3000 Sell Closed 80 10 8691 Buy Open 81 3 2500 Sell Closed 82 9 2388 Sell Closed 83 1 12400 Sell Closed 84 5 2904 Sell Closed 85 11 3848 Buy Open 86 12 7745 Buy Open 

要用数组公式一步完成,可以使用:

 =SUM(IFERROR((D66:D86*(F66:F86="Closed"))/((C66:C86=TRANSPOSE(C66:C86))*TRANSPOSE(D66:D86*(F66:F86="Partial Sold"))),0)) 

这是一个数组公式,必须用Ctrl + Shift + Enter 确认

它将生成一个2D数组,它将原始值保存为行,并将这个一维数组分为:

  • 通过列C =转置列C来build立二维数组
  • 乘上col D每行
  • 如果不是“部分销售”,则将每行中的所有项目设置为0

对于每个div 0, IFERROR将其设置为0
这一切都在SUM会给你你的输出

在这里输入图像说明

我也会推荐使用帮手列。 你不需要使用数组公式来得到答案。 您可以在下一个可用列中使用以下内容:

 =IF(F66="Closed",IFERROR(D66/SUMIFS($D$66:$D$86,$F$66:$F$86,"Partial Sold",$C$66:$C$86,C66),0),0) 

这将返回与您的标准相匹配的所有值,并为所有其他值返回零。 那么你可以把这个帮手列的总和作为你最后的汇率总和。

高强

如果你真的不想使用一个辅助列,你可以将辅助列公式包装在一个SUM并换出数组的单个单元格引用(即交换F66$F$66:$F$86 ,等等),然后用Ctrl + Shift + Enter 作为数组公式input。 整个事情看起来像这样:

 =SUM(IF($F$66:$F$86="Closed",IFERROR($D$66:$D$86/SUMIFS($D$66:$D$86,$F$66:$F$86,"Partial Sold",$C$66:$C$86,$C$66:$C$86),0),0)) 

没有帮手列,我看不到这一切。 在F66右边的未使用的列中,放入这个数组1。

 =IF(AND(OR(C66=INDEX(C$66:C$86*(F$66:F$86="Partial Sold"), , )), F66="Closed"), D66/INDEX(D$66:D$86, AGGREGATE(15, 6, ROW($1:$21)/((C$66:C$86=C66)*(F$66:F$86="Partial Sold")), 1)), "") 

根据需要填写。 结果将是这些“帮手”号码的总和。

helper_sum_column

即使这可以用一个单一的公式来完成,计算开销可能会被禁止。 将一部分数组计算拆分为一个帮助列,可以直接引用C列中的值进行另一次查找,从而显着减less了这一点。


¹ 数组公式需要使用Ctrl + Shift + Enter 来完成。 一旦正确input第一个单元格,就可以像其他任何公式一样向下或向右填充或复制它们。 尝试和减less您的全列引用范围更接近代表实际数据的范围。 数组公式将计算周期对数化,所以最好将参考范围缩小到最小。 有关更多信息,请参阅数组公式的示例 。