在Excel中将矩阵(?)传递给VBA

伯恩·里奥

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

有什么建议?谢谢!

德米特里·帕夫利夫(Dmitry Pavliv)

问题是因为公式:

=CONCATIF((A1:A9=C1)*(B1:B9=D1); E1:E9)

需要通过按CTRL+ SHIFT+来调用ENTER

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章