VLOOKUP需要搜索最左边的列,这样就无法工作了。 INDEX + MATCH将起作用,但MATCH无法搜索多个或二维范围。解决方法是将不同范围的多个MATCH组合在一起。
E7中的查找结果使用以下公式:
=IFERROR(INDEX(A2:A5,IFERROR(MATCH(E8,D2:D5,0),0)+IFERROR(MATCH(E8,G2:G5,0),0)),"Invalid Sub_code")
每列都有自己的MATCH。匹配将仅在一列中发生,因此如果列没有匹配,则IFERROR返回零。然后添加匹配值将组合列的位置索引与匹配,并为任何其他搜索列组合零。问题标题是“两列或更多列”。这可以通过为每个附加列添加另一个MATCH表达式来扩展。
如果输入了错误的Sub_code,INDEX将使用自己的IFERROR进行封装。 MATCH不区分大小写,因此如果只有大小写不相同,它仍然会找到匹配。
当然,您可以拥有多个输入单元格和相应的结果单元格。
替代
@Rajesh S注意到这也可以重组:
=IFERROR(INDEX(A2:A5,MATCH(E8,D2:D5,0)),IFERROR(INDEX(A2:A5,MATCH(E8,G2:G5,0)),"Invalid Sub_code"))
这将每个MATCH表达式与INDEX一起使用。 INDEX上的IFERROR也会处理任何MATCH错误。然后嵌套IFERRORS,因此第一次查找中的错误转到第二次,并且出现错误的Sub_code警告。它的长度相同,因为当IFERROR函数计数减少时,INDEX函数计数会增加。这可以通过额外的嵌套扩展到其他列。
使用最直观的版本。
为了比较结构和逻辑,我将打破公式。
备选方案1:
=IFERROR(
INDEX(A2:A5,
IFERROR( MATCH(E8,D2:D5,0) ,0) + IFERROR( MATCH(E8,G2:G5,0) ,0) )
,"Invalid Sub_code")
备选方案2:
=IFERROR(
INDEX(A2:A5, MATCH(E8,D2:D5,0) )
,IFERROR(
INDEX(A2:A5, MATCH(E8,G2:G5,0) )
,"Invalid Sub_code") )
John
我打字时打印在黄色光标框中Ag1
要么Ps1
在那个盒子里。我不确定使用哪种配方。