Excel SUMIFS多个条件单元格值

时间:2017-02-08 23:13:52

标签: excel vba sumifs

已经向{p> Similar questions提出了这个问题但不完全一样。有one非常接近,但该解决方案对我不起作用。

我有一个函数可以将逗号分隔值返回到单元格中。我想使用像one之类的方法将该单元格中的元素作为标准传递给SUMIFS函数。

我的尝试如下图所示:

enter image description here

我认为这与函数理解单元格G8中的内容的方式有某种联系。看起来它正在添加一些额外的报价。如果我在公式栏中突出显示G8并按F9,我会得到:

enter image description here

每个标准的每一边都有额外的引号。

我对自定义VBA函数解决方案持开放态度,但我更喜欢可以构建为工作表函数的东西。标准从自定义VBA函数返回,该函数将元素从列表框中拉出,并执行一些正则表达式以删除额外的逗号。可以选择的元素数量是可变的,因此我希望避免将条件拆分为多个单元格。谢谢。

1 个答案:

答案 0 :(得分:1)

似乎原始逗号分隔条件位于G6,您只需要将此条件拆分为数组并将其提供给SUMIFS。拆分在VBA中可用,但不会暴露给Excel。我们所需要的只是编写一个用于拆分CSV的UDF,并在我们的公式中使用它:

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。这导致更多的灵活性(正常公式与数组公式)以及一些预期的"绩效改善。

=SUMPRODUCT(SUMIFS(C3:C10, B3:B10, "blue", A3:A10, splitCSV(G6)))