Excel 2010比较多列(2列与另外2列)

ars1skjm  于 2023-02-05  发布在  其他
关注(0)|答案(2)|浏览(154)

我想将两列与另外两列进行比较。
问题是,我希望能够搜索整个列以查找第二组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?,可以工作,但我正在寻找一个“干净”的方式来做到这一点。
先谢了

0ejtzxu1

0ejtzxu11#

这是一个用户定义函数,它将执行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
iezvtpos

iezvtpos2#

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

相关问题