TOP

VLOOKUP 根据两个条件进行组合 (VLOOKUP3)

描述

让我们考虑函数 VLOOKUP - VLOOKUP3 的改进版本,它使我们有机会在两个条件匹配时替换值。当我们需要执行组合的字段中没有唯一值的情况下,此函数非常有用。


一个问题的例子

假设我们需要连接两个表,但没有唯一值:

正如您所看到的,我们有相同姓氏的借款人和具有相同号码的信贷协议。与普通功能结合 VLOOKUP 将会出现问题,因为它一次只匹配一个条件,并且只匹配找到的第一个值。

让我们重做我们通常的VLOOKUP,根据两个条件替换值。

VBA 函数 VLOOKUP3 的代码

打开菜单 服务-宏-编辑器Visual Basic , 插入新模块 (菜单 Insert - Module )并将该文本复制到那里 功能:

Function VLOOKUP3(Table1       As Range, _
                  SearchValue1 As Variant, _
                  Table2       As Range, _
                  SearchValue2 As Variant,_
				  ResultColumn As Range)
  'moonexcel.com.ua
  Dim i As Integer
               
  For i = 1 To Table1.Rows.Count
    If Table1.Cells(i, 1) = SearchValue1 Then
      If Table2.Cells(i, 1) = SearchValue2 Then
        VLOOKUP3 = ResultColumn.Cells(i, 1)
        Exit For
      End If
    End If
  Next i
                
End Function 

关闭编辑器 Visual Basic 并返回Excel。

使用功能

现在在 函数向导 在类别中 用户自定义 您可以找到我们的 VLOOKUP3 函数并使用它。该函数的语法如下:

=VLOOKUP3( 范围1 ; 搜索值1 ; 范围2 ; 搜索值2 ; 我们替换值的范围

也就是说,为了正确地用单元格中的姓氏和协议编号替换贷款金额 E15 您需要输入:

=VLOOKUP3($A$2:$A$11; A15; $B$2:$B$11; B15; $C$2:$C$11)

另外,不要忘记用美元符号固定范围 ($) ,这样我们在复制公式时就不会错过范围(为了快速修复,也可以使用F4键)。

有关该主题的文章: