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
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句