【问题标题】:Need help, Excel Formula, Count number of cells in a range that match the content of a different range需要帮助,Excel 公式,计算范围内与不同范围内容匹配的单元格数
【发布时间】:2014-04-28 11:31:52
【问题描述】:

我在 Excel 上做得很好,但这让我很受用。

我有一系列条目 - $D7:$AH7

我想知道这些条目在这个范围内出现了多少次 - $K$7:$V$10

我尝试过 countif 数组,但我认为它试图将行与行匹配,而不是我范围内的每个条目与整个查找范围相匹配。我还尝试将查找范围转置到同一行,但我认为它会尝试以相同的方式逐列匹配。

如果 sumproduct 有效,我不能使用本文档的计算量太大。

如果您有这个建议,我很乐意使用 VBA 解决方案。

【问题讨论】:

    标签: arrays excel count formula vba


    【解决方案1】:

    非 VBA 解决方案:

    =SUMPRODUCT(COUNTIF($K$7:$V$10,$D7:$AH7))
    

    VBA 解决方案:

    找到来自rng1 的值出现在rng2 中的次数:

    它可以忽略空格吗?

    UPD:

    Function countEntries(rng1 As Range, rng2 As Range) As Long
        Dim arr1, arr2, a1, a2
    
        arr1 = rng1.Value
        arr2 = rng2.Value
    
        For Each a1 In arr1
            If Trim(a1) <> "" Then
                For Each a2 In arr2
                    If a2 = a1 Then
                        countEntries = countEntries + 1
                        Exit For
                    End If
                Next
            End If
        Next
    End Function
    

    这样称呼它:=countEntries($D7:$AH7,$K$7:$V$10)


    附:我使用循环来确定数组是否包含值,而不是Application.Match/Application.CountIf,因为它的速度快了 10 倍。详情见此链接:Matching values in string array

    【讨论】:

    • 这个 VBA 解决方案很棒,但也匹配空白,这给我带来了问题。可以忽略空格吗?
    • simoco.... 我不是 VBA 专家,但我刚刚进行了以下调整以解决空白条目。如果您有比此编辑更好的解决方案,请告诉我。无论哪种方式,感谢您的帮助,让我摆脱了束缚;) If a2 = "" Then ' do nothing Else
    • 是的,If a2 = "" Then 很不错,但似乎为a1 添加相同的条件会稍微好一些。查看我的更新答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多