Excel SUMIFS多个标准单元格值
类似的 问题已经被问到,但不完全如此。 有一个非常接近,但是这个解决scheme不适合我。
我有一个函数,将逗号分隔值返回到一个单元格。 我想通过使用像这样的方法将那个单元格中的元素作为条件传递给SUMIFS
函数。
我的尝试如下图所示:
我相信,这与function理解G8单元的方式有某种联系。 它看起来像添加一些额外的报价。 如果我在公式栏中突出显示G8,然后按F9,则会得到:
每个标准的每一边都有额外的引号。
我打开一个自定义的VBA函数解决scheme,但我更喜欢可以构build为工作表函数的东西。 条件从一个自定义的VBA函数中返回,这个函数将元素从列表框中拉出来,并且执行一些正则expression式来移除额外的逗号。 可以select的元素的数量是可变的,所以我想避免必须将标准分成多个单元格。 谢谢。
看起来,原始的逗号分隔的标准是在G6
,你所需要的只是把这个标准拆分成一个数组并把它提供给SUMIFS
。 分割在VBA中可用,但不会暴露给Excel。 我们所需要的只是编写一个小小的UDF来分割CSV,并将其用于我们的公式中:
Function splitCSV(str As String) splitCSV = Split(str, ",") End Function
现在F10
的公式是:
=SUM(SUMIFS(C3:C10, B3:B10, "blue", A3:A10, splitCSV(G6)))
编辑
以上是一个数组公式(Ctrl + Shift + Enter)。 要有一个正常的公式,我们可以使用SUMPRODUCT
而不是SUM
。 这导致更多的灵活性(正常公式vs数组公式)以及一些“预期”的性能改进。
=SUMPRODUCT(SUMIFS(C3:C10, B3:B10, "blue", A3:A10, splitCSV(G6)))