我想要一个费率总和。让我解释一下:我想总结列D中与2个条件匹配的数字(excel中的绿色行)。第一个:列F等于“关闭”。第二个:C列等于那些与下列条件匹配的数字:F列等于“Partial Sold”。同时,先前总和中的每个数字可能除以列F中与“部分出售”匹配的列数D. 附带表格/图表的示例:(4510/9820)+(6500/9820)+(9100/15400)+(2388/2995)+(12400/9820)+(2904/5855)。 我的细胞是:(D69 / D66)+(D70 / D66)+(D76 / D74)+(D82 / D78)+(D83 / D66)+(D84 / D72)。
@Jeeped你的细胞将是:(D6 / D3)+(D7 / D3)+(D13 / D11)+(D19 / D15)+(D20 / D3)+(D21 / D9)
.. C D E F
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
答案 0 :(得分:3)
使用可以使用的数组公式一步完成:
books
这是一个数组公式,必须使用 Ctrl + Shift + Enter↵确认。
它会生成一个二维数组,其中包含原始值作为行关闭,并将此1D数组除以:
对于每个div为0,db.allDocs({include_docs: true}).then(function(docs) {
var highest;
$.each(docs.rows, function() {
var item = $(this)[0].doc
if (highest == undefined || item.x > highest) {
highest = item.x
}
})
map = function(doc, emit) {
if (doc.x == highest) {
emit([doc.x])
}
}
db.query(map, {include_docs: true}).then(function(result) {
console.log(result)
})
})
将其设置为0
并且=SUM(IFERROR((D66:D86*(F66:F86="Closed"))/((C66:C86=TRANSPOSE(C66:C86))*TRANSPOSE(D66:D86*(F66:F86="Partial Sold"))),0))
中的所有内容都会为您提供输出
答案 1 :(得分:2)
我也建议使用辅助列。但是,您不需要使用数组公式来获得答案。您可以在下一个可用列中使用以下内容:
=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↵< / KBD>。整件事情看起来像这样:
=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))
答案 2 :(得分:1)
如果没有辅助列,我不会看到这样做。在F66右侧未使用的列中,放置此数组的公式。
=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)), "")
根据需要填写。结果将是那些'帮助'数字的总和。
即使可以在单个公式中完成,计算开销也可能过高。将一部分数组计算拆分为一个辅助列,该列可以直接引用C列中的值进行另一次查找,从而显着降低了这一点。
¹数组公式需要用 Ctrl + Shift + Enter↵完成。一旦正确进入第一个单元格,就可以像任何其他公式一样向下或向右填充或复制它们。尝试并减少对更接近表示实际数据范围的范围的全列引用。数组公式以对数方式计算计算周期,因此将参考范围缩小到最小值是一种好习惯。有关详细信息,请参阅Guidelines and examples of array formulas。