查找包含范围之间的多个搜索条件的记录

时间:2016-04-28 19:21:18

标签: excel excel-formula

我正在尝试使用多个搜索条件查找记录。我想将员工的角色和最小年份和最大年份之间的年数与下面的“标题”相匹配。我想尽可能坚持使用功能。

Title           Role     Min Year   Max Year
Senior Sales    Sales       6      99
Middle Sales    Sales       2      5
Junior Sales    Sales       0      1
Sr. Counsel     Counsel     0      99
Jr Counsel      Counsel     0      99
Senior Staff    Staff       6      99
Middle Staff    Staff       2      5
Junior Staff    Staff       0      1
Other           Other       0     99

例如,Bill的销售额为一年,并且应该具有Title Junior Sales。乔,员工10年,应该是高级职员。

ID  Last    Name    Title   Seniority   Expected Result
1   Nye     Bill    Sales   1           Junior Sales 
2   Smith   Joe     Staff   10          Senior Staff 

此公式返回正确的结果,但仅当它是“高级”级别标题而不是其他标题(#REF)时。

=INDEX($A$2:$A$10,MATCH($D20,$B$2:$B$10,0),MATCH($E20,$D$2:$D$10,-1))

这是一个返回角色的第一个实例的公式:

=INDEX(A2:A10,AND(MATCH(D20,B2:B10,0),SUMPRODUCT(--(E20<=D2:D10),--(E20>=C2:C10))))

它返回“高级销售”而不是“初级销售”。

感谢。

3 个答案:

答案 0 :(得分:1)

使用数组公式(使用 ctrl + shift + enter 输入)可以使用此

=INDEX($A$2:$A$10,MATCH(1,(E20>$C$2:$C$10)*(E20<=$D$2:$D$10)*($B$2:$B$10=D20),0))

比较语句返回0(错误)和1(真)的数组。当所有三个都为真时,它们相乘以返回1,然后在匹配函数中匹配。

答案 1 :(得分:1)

这是一个非CSE数组公式:

=INDEX($A$2:$A$10,MAX(INDEX(($B$2:$B$10=J2)*($C$2:$C$10<=K2)*($D$2:$D$10>=K2)*(ROW($A$2:$A$10)-ROW($A$2)+1),)))

enter image description here

答案 2 :(得分:0)

只要您保持查找表的排列方式,此代码就适用于我:

=INDEX($A$2:$A$10,MATCH($D20,$B$2:$B$10,0) + MATCH($E20,$D$2:$D$10,-1) - 1 )