我想将 2 列与其他 2 列进行比较。
问题是我希望能够在整个列中搜索第二组 2 列。例如,
C2 and D2
中的值可以与 I23 and J23
或 I101 and J101
中的值匹配。
我发现 VLOOKUP 具有用于将一列与另一列进行比较的功能。
=VLOOKUP(C2;$I$2:$K$343;3)
在上面的函数中,C2 值在 I 列(从单元格 2 到 343)中查找,如果在该列中找到,它将返回匹配单元格右侧第三个单元格的值。
结合这个问题的答案如何比较Excel中的多个列?这可以工作,但我正在寻找一种“干净”的方法来做到这一点。
提前致谢
这是一个用户定义函数,它将执行 2 列查找。将其视为
vlookup
。
LookupPair
是一对细胞。 (C2:D2) 在你的例子中。除了一对并排单元格之外的任何其他情况都会导致错误。
LookupRange
是包含匹配对列 和 返回列的列。在你的例子中类似于 (I1:K101) 。 LookupRange
必须包含至少两列,否则会生成错误。
ReturnCol
是 LookupRange
中包含要返回的值的列号。 (与 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
一个简单的变体是使用函数 CONCATENATE() 连接两列中的搜索字符串。之后您可以使用各种函数 VLOOKUP()、MATCH() 比较列......