Excel 中具有多个条件的 SUMIF() 的一个常见解决方案如下所示 (此公式统计 A 列在 C1 中具有值且 B 列在 D1 中具有值的所有情况):
=SUMPRODUCT((A1:A9=C1)*(B1:B9=D1))
我现在需要一个函数来连接满足多个条件的行中的字符串。 http://www.ms-office-forum.net/forum/showthread.php?t=273352 对于一个情况有一个很好的解决方案。
但是,我想检查多个条件 - 因此使用上面的 SUBPRODUCT() 技巧。我的问题是:如何在函数中定义参数才能获取数组?这是我到目前为止得到的:
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************
Option Explicit
Public Function CONCATIF(Kriterium, Inhalte)
Dim mydic As Object
Dim L As Long
Set mydic = CreateObject("Scripting.Dictionary")
For L = 1 To UBound(Kriterium)
If Kriterium(L, 1) = 1 Then
If Inhalte(L, 1) <> "" Then
mydic(L) = Inhalte(L, 1)
End If
End If
Next
CONCATIF = Join(mydic.items, vbCrLf)
End Function
如果我为参数 1 选择一列,则效果很好。但是一旦我包含乘积公式(如上所示),只有值为 1 的 Variant/Double 会传递给 Kriterium .
=CONCATIF(A1:A9; E1:E9) Works fine (if column A is 0/1 coded)
=CONCATIF((A1:A9=C1)*(B1:B9=D1); E1:E9) Does not work at all
有什么建议吗?谢谢!
最佳答案
问题是因为公式:
=CONCATIF((A1:A9=C1)*(B1:B9=D1); E1:E9)
需要通过按CTRL+SHIFT+ENTER来调用
关于vba - 在 Excel 中将矩阵 (?) 传递给 VBA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21063780/