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)))