我有一个函数可以将逗号分隔值返回到单元格中。我想使用像one之类的方法将该单元格中的元素作为标准传递给SUMIFS
函数。
我的尝试如下图所示:
我认为这与函数理解单元格G8中的内容的方式有某种联系。看起来它正在添加一些额外的报价。如果我在公式栏中突出显示G8并按F9,我会得到:
每个标准的每一边都有额外的引号。
我对自定义VBA函数解决方案持开放态度,但我更喜欢可以构建为工作表函数的东西。标准从自定义VBA函数返回,该函数将元素从列表框中拉出,并执行一些正则表达式以删除额外的逗号。可以选择的元素数量是可变的,因此我希望避免将条件拆分为多个单元格。谢谢。
答案 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)))