动态总和查询

时间:2015-06-06 22:46:55

标签: excel vba sum finance

我有2列如下

A        B           
Trade    0
         0
         1
         7
         6

现在,一旦ColA回归"贸易" - 我想在ColC中返回 - 第一个大于0的值,在这个例子中它将是值1,位于单元格B4中。因此,我希望它总和直到> 0并返回该数字。

来自评论:

  

我正在思考

     

=如果(B2大于0,B2,B3)

     

...但是我需要延长这个来说如果B3不是> 0给我B4?但它看起来很长,并且不能持续10000多行数据

1 个答案:

答案 0 :(得分:0)

  

警告:我无法想到任何可以实现此目的的非数组公式,并且在使用数组公式计算负载时,10,000行的任何数据都会很难。

我将基于这个基于公式的解决方案基于以下样本数据,这是我可以从原始问题中确定的最佳数据。

SUM staggered data with conditions

使用D2:D5中A列的文本字符串列表,我在E2中使用了以下数组公式

=INDEX(INDEX(B:B, MATCH(D2,A:A, 0)):INDEX(B:B, MATCH(1E+99,B:B )), MATCH(TRUE, INDEX(B:B, MATCH(D2,A:A, 0)):INDEX(B:B, MATCH(1E+99,B:B ))>0, 0))

需要使用 Ctrl + Shift + Enter↵来最终确定数组公式。一旦输入正确,可以根据需要填写它们。您的结果应与以下内容类似。

SUM staggered data with conditions INDEX formula

此公式会动态截断列引用,但我没有在10K行数据上尝试过。预计会有一些计算滞后。