Vlookup使用2列来引用另一个
我想在先姓的情况下做一个虚拟的查找来获得一个年龄。 这将在列A和列B中完成。如果在列A中find,则继续到列B,如果在列B中find,则将来自列C的J3中的年龄放入“无”。
这里是一个例子:
J1 = John J2 = Doe J3 = =VLOOKUP J1 & J2,A1:C50,3,FALSE)
J3是我到目前为止。 我需要嵌套一个Vlookup检查列A,然后列B以获得年龄?
以下是表格列表的一个例子:
ABC Jeff Vel 80 John Fly 25 Jake Foo 20 John Doe 55
J3 = 55。
很多方法:
- 处理号码回报:
如果您的返回值是数字并且匹配是唯一的(在数据中只有一个John Doe),或者如果有多个数字,则要求返回的总和,那么使用SUMIFS是最快的方法。
=SUMIFS(C:C,A:A,J1,B:B,J2)
- 用非数字返回
如果返回值不是数字或有多个,那么有两种方法可以获得列表中的第一个匹配项:
一个。 帮手列:
在第四栏中提出以下公式:
=A1&B1
并抄下列表
然后使用INDEX / MATCH:
=INDEX(C:C,MATCH(J1&J2,D:D,0))
湾 数组公式:
如果你不想或者不能创build第四列然后使用数组types公式:
=INDEX(C:C,AGGREGATE(15,6,ROW($A$1:$A$4)/(($A$1:$A$4=J1)*($B$1:$B$4=J2)),1))
数组types公式需要将数据的大小限制为数据集。
如果您的数据集定期更改大小,我们可以通过添加更多的INDEX / MATCH来将上面的单元格修改为dynamic,以返回数据的最后一个单元格:
=INDEX(C:C,AGGREGATE(15,6,ROW($A$1:INDEX($A:$A,MATCH("ZZZ",A:A)))/(($A$1:INDEX($A:$A,MATCH("ZZZ",A:A))=J1)*($B$1:INDEX($B:$B,MATCH("ZZZ",A:A))=J2)),1))
这将允许数据集增大或缩小,公式将只遍历数据而不是整列。
上述方法按照Best-Better-Good的顺序设置。
- 在一个单元格中获得多个答案
如果你不想总结,或者返回值是文本,并且有多个John Doe实例,并且你想要在一个单元格中返回所有的值,那么:
一个。 如果您有Office 365 Excel,则可以使用TEXTJOIN的数组forms:
=TEXTJOIN(",",TRUE,IF(($A$1:$A$4=J1)*($B$1:$B$4=J2),$C$1:$C$4,""))
作为一个数组公式,在退出编辑模式时,需要使用Ctrl-Shift-Enter而不是Enter来确认。 如果正确完成,则Excel将在公式周围放置{}
。
像上面的AGGREGATE公式一样,它需要被限制在数据集中。 INDEX / MATCHfunction也可以使范围dynamic化。
湾 如果没有Office 365 Excel,则将此代码添加到附加到工作簿的模块中:
Function TEXTJOIN(delim As String, skipblank As Boolean, arr) Dim d As Long Dim c As Long Dim arr2() Dim t As Long, y As Long t = -1 y = -1 If TypeName(arr) = "Range" Then arr2 = arr.Value Else arr2 = arr End If On Error Resume Next t = UBound(arr2, 2) y = UBound(arr2, 1) On Error GoTo 0 If t >= 0 And y >= 0 Then For c = LBound(arr2, 1) To UBound(arr2, 1) For d = LBound(arr2, 1) To UBound(arr2, 2) If arr2(c, d) <> "" Or Not skipblank Then TEXTJOIN = TEXTJOIN & arr2(c, d) & delim End If Next d Next c Else For c = LBound(arr2) To UBound(arr2) If arr2(c) <> "" Or Not skipblank Then TEXTJOIN = TEXTJOIN & arr2(c) & delim End If Next c End If TEXTJOIN = Left(TEXTJOIN, Len(TEXTJOIN) - Len(delim)) End Function
然后如上所述使用TEXTJOIN()公式。