如何对包含空白的动态范围进行 SUMIF?
How to SUMIF on a dynamic range that includes blanks?
我有一列数字想求和,但仅在某些匹配条件下,因此我成功地使用了 SUMIF
和 SUMIFS
。现在我想让范围动态化。这是有效的非动态函数:
=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)
我有一列数字想求和,但仅在某些匹配条件下,因此我成功地使用了 SUMIF
和 SUMIFS
。现在我想让范围动态化。这是有效的非动态函数:
=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)