如何在包含空格的动态范围上进行SUMIF?

时间:2015-05-19 00:07:10

标签: google-sheets formulas

我有一列我希望求和的数字,但仅限于某些匹配条件,因此我已成功使用SUMIFSUMIFS。现在我想让范围变得动态。这是有效的,非动态的功能:

=SUMIF(B2:B60, "CC/*", A2:A60)

B列包含以“CC /”开头的值,而A列包含值。

我的新功能,如果列B已排序且单元格之间不包含空格,则该功能为:

=SUMIF(OFFSET(B1, 1, 0, COUNTA(B:B), 1), "CC/*", OFFSET(A1, 1, 0, COUNTA(A:A), 1))

这里显而易见的问题是COUNTA返回了多少字段有一个值,OFFSET返回了许多字段,无论它们是否为空。然后我的SUMIF函数处理该数据并返回意外的总数,因为存在空白单元格。

这是一个示例数据表。我SUMIF的预期结果是3.00;但是,上面的代码将返回1.00,因为COUNTA将返回2,因为第二列中只有两个非空白字段。

     A       B
 +-------+--------+
1| Cost  | Source |
 +-------+--------+
2|  1.00 | CC/1   |
 +-------+--------+
3| 10.00 |        |
 +-------+--------+
4|  2.00 | CC/2   |
 +-------+--------+
5| 20.00 |        |
 +-------+--------+

P.S。我发现这个论坛帖子看起来像是我正在寻找的,但很难将概念应用到我的特定问题。

http://www.mrexcel.com/forum/excel-questions/451089-count-blanks-dynamic-range.html

3 个答案:

答案 0 :(得分:1)

只要colA中没有空格,您就可以使用:

=SUMIF(OFFSET(B1, 1, 0, COUNTA(A:A), 1), "CC/*", OFFSET(A1, 1, 0, COUNTA(A:A), 1))

答案 1 :(得分:1)

由于您使用B列中的文本作为条件,因此范围的范围应该是包含B列中文本的最后一行。使用非易失性INDEX function代替volatile {{3和} OFFSET function找到包含B列中文本的最后一行,公式变为,

=SUMIF(B2:INDEX(B:B, MATCH("zzz",B:B )), "CC/*", A2:INDEX(A:A, MATCH("zzz",B:B )))

答案 2 :(得分:0)

我可能错过了一些东西,但这可以通过简单地使用开放式范围来实现吗?

=sumif(B2:B, "CC/*", A2:A)