如何对包含空白的动态范围进行 SUMIF?

How to SUMIF on a dynamic range that includes blanks?

我有一列数字想求和,但仅在某些匹配条件下,因此我成功地使用了 SUMIFSUMIFS。现在我想让范围动态化。这是有效的非动态函数:

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

B 列包含以 "CC/" 开头的值,A 列包含这些值。

我的新函数是:

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

这里明显的问题是 COUNTA return 有多少字段有值,OFFSET return 有多少字段,不管它们是否为空.然后我的 SUMIF 函数处理该数据并且 return 由于存在空白单元格而出现意外总数。

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

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

P.S。我发现这个论坛 post 看起来正是我要找的东西,但很难将这些概念应用到我的特定问题上。

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

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

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

由于您使用 B 列中的文本作为条件,因此范围的范围应该是 B 列中包含文本的最后一行。使用非易失性 INDEX function in place of the volatile OFFSET function and the MATCH function 查找包含 B 列中文本的最后一行B 列中的文本公式变为,

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

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

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