Excel 2010 比较多列(2 列与其他 2 列)

Posted

技术标签:

【中文标题】Excel 2010 比较多列(2 列与其他 2 列)【英文标题】:Excel 2010 comparing multiple columns (2 columns to 2 other columns) 【发布时间】:2013-09-18 05:32:41 【问题描述】:

我想将 2 列与其他 2 列进行比较。

问题是我希望能够在整个列中搜索第二组 2 列。例如,C2 and D2 中的值可以匹配 I23 and J23I101 and J101 中的值。

我发现 VLOOKUP 具有将一列与另一列进行比较的功能。

=VLOOKUP(C2;$I$2:$K$343;3)

在上面的函数中,C2 值在 I 列(从单元格 2 到 343)中查找,如果在该列中找到,它将返回匹配单元格右侧第三个单元格的值。

结合这个问题的答案How to compare multiple columns in excel? 可以工作,但我正在寻找一种“干净”的方式来做到这一点。

提前致谢

【问题讨论】:

【参考方案1】:

一个简单的变体是使用函数 CONCATENATE() 连接来自两列的搜索字符串。之后您可以使用各种函数 VLOOKUP()、MATCH() 比较列.....

【讨论】:

【参考方案2】:

这是一个用户定义的函数,它将执行 2 列查找。将其视为vlookup

LookupPair 是一对单元格。 (C2:D2) 在你的例子中。除了一对并排的单元格之外的任何其他内容都会导致错误。

LookupRange 是包含匹配对列返回列的列。在您的示例中类似于 (I1:K101) 。 LookupRange 必须至少包含两列,否则会产生错误。

ReturnColLookupRange 中包含要返回的值的列号。 (与vlookup 中的Col_index_num 相同)。

该函数只进行完全匹配。

Function DoubleColMatch(LookupPair As Range, LookupRange As Range, ReturnCol As Integer) As Variant
Dim ReturnVal As Variant
Dim Col1Val As Variant
Dim Col2Val As Variant
Dim x As Long

    If LookupPair.Rows.Count > 1 _
    Or LookupPair.Columns.Count <> 2 _
    Or LookupRange.Columns.Count < 2 _
    Or ReturnCol < 1 _
    Or ReturnCol > LookupRange.Columns.Count _
    Then
        ReturnVal = CVErr(xlErrRef)
    Else
        Col1Val = LookupPair.Cells(1, 1)
        Col2Val = LookupPair.Cells(1, 2)

        ReturnVal = CVErr(xlErrNA)

        For x = 1 To LookupRange.Rows.Count
            If LookupRange.Cells(x, 1) = Col1Val _
            And LookupRange.Cells(x, 2) = Col2Val Then
                ReturnVal = LookupRange.Cells(x, ReturnCol).Value
                Exit For
            End If
        Next x

    End If

    DoubleColMatch = ReturnVal
End Function

【讨论】:

以上是关于Excel 2010 比较多列(2 列与其他 2 列)的主要内容,如果未能解决你的问题,请参考以下文章

Cassandra 中的单数据列与多列

excel统计每个数据出现次数 多行多列

excel中我想选中某一列不包含首行前几行应该如何做

Excel多列中查找重复的数据

excel多列合并成一列: 如1 2 3 合并成123在一列里面用逗号隔开

Excel:VLOOKUP 将一列与另一张表匹配并连接数据