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

标签 vba excel

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/

相关文章:

excel - 查找最先出现的数字的行索引

excel - 删除重复项,保留最后一个条目——优化

arrays - 使用数组比较两个工作表

excel - 如果 2 行的 2 个单元格相同,则将单元格字符串添加到另一个单元格

html - 如何下载文件夹中A列的所有链接?

vba - 从网络下载文件 (PDF)

excel vba sql语句返回单个字符串

Excel按多个匹配条件合并列

vba - vba中excel列表中的最大几个变量

vba - Excel VBA将参数传递给OLEDBConnection