Excel 2010比较多列(2列到2列)

时间:2013-09-13 13:40:29

标签: excel comparison compare excel-2010

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

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

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

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

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

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

提前致谢

2 个答案:

答案 0 :(得分:0)

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

LookupPair是一对细胞。在你的例子中(C2:D2)。其他任何一个并排的单元格都会导致错误。

LookupRange是包含匹配对列返回列的列。你的例子中有类似(I1:K101)的东西。 LookupRange必须至少包含两列,否则会生成错误。

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

该功能仅进行完全匹配。

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

答案 1 :(得分:0)

一个简单的变体是使用功能CONCATENATE()连接两列中的搜索字符串。然后,您可以将列与各种函数进行比较VLOOKUP(),MATCH().....