excel - 比较Excel中的两个范围(不是线性比较)

标签 excel excel-formula

我在 Excel 中有两个范围。

sample data

我需要执行以下操作:

1).计算除了零之外我还有多少个相等的值。在我的示例中,它应该是 2(1 和 8)。我找到了这个公式:SUMPRODUCT(--(A2:E2=A3:E3)),但它只会匹配 B1、B2,忽略数字 8 也出现了两次。

2).另外,我需要将这些重复值放在一个单元格中,用逗号分隔,就像“1,8”一样。

最佳答案

试试这个 SUM超过COUNTIFS数组 1 公式,

=SUM(COUNTIFS(A2:E2, "<>"&0, A2:E2, A3:E3))

     sum_over_countifs_array

1 数组公式需要使用 Ctrl+Shift+Enter↵ 来完成。一旦正确输入第一个单元格,就可以像任何其他公式一样向下或向右填充或复制它们。尝试将整列引用减少到更接近地代表实际数据范围的范围。数组公式以对数方式消耗计算周期,因此最好将引用范围缩小到最小值。请参阅Guidelines and examples of array formulas了解更多信息。

对于您问题的后半部分,我将提供这个基本的 UDF,它将匹配的值串在一起。作为一名编程爱好者,您应该会非常乐意修改代码以包含频率计数。

Function stringMatches(rng1 As Range, rng2 As Range, _
                       Optional sDELIM As String = ", ", _
                       Optional bNOZERO As Boolean = True)
    Dim sTMP As String, rng As Range

    stringMatches = vbNullString
    For Each rng In rng1
        If (CBool(Application.CountIf(rng2, rng.Value)) And Not bNOZERO) Or _
           (CBool(Application.CountIfs(rng2, "<>" & 0, rng2, rng.Value)) And bNOZERO) Then
            sTMP = sTMP & rng.Value & sDELIM
        End If
    Next rng

    If CBool(Len(sTMP)) Then _
        stringMatches = Left(sTMP, Len(sTMP) - Len(sDELIM))
End Function

       stringMatches

关于excel - 比较Excel中的两个范围(不是线性比较),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34453313/

相关文章:

excel - 公式自动出现

vba - 圆函数 VBA EXCEL

vba - Application.OnKey 仅适用于一个电子表格

arrays - 组合框和文本框单击事件的 VBA 动态数组

excel - Excel VBA中的解析列表?

excel - 如果 B 列不为空,则在 C 列中插入公式

java - 如何在 Java 中通过 int 数组的编号创建多个 XML 元素

excel - 当重要的输入文本框为空时如何生成错误

Excel 条件数据和文本处理

arrays - 转置满足条件的行中的值