检查“单元格”值是否存在于“列”中,然后获取“下一个”单元格的值


89

检查一列中是否存在单元格值后,我需要获取匹配单元格旁边的单元格值。例如,我检查中的值是否cell A1存在column B,并假设它匹配B5,那么我想要中的值cell C5

为了解决问题的前半部分,我这样做了...

=IF(ISERROR(MATCH(A1,B:B, 0)), "No Match", "Match")

...而且有效。然后,由于先前对SO的回答,我还能够获得匹配单元格的行号:

=IF(ISERROR(MATCH(A1,B:B, 0)), "No Match", "Match on Row " & MATCH(A1,B:B, 0))

因此,很自然地,为了获得下一个单元格的价值,我尝试了...

=IF(ISERROR(MATCH(A1,B:B, 0)), "No Match", C&MATCH(A1,B:B, 0))

...这是行不通的。

我想念什么?如何将列号附加到返回的行号上以获得所需的结果?

Answers:


99

使用其他功能,例如VLOOKUP:

=IF(ISERROR(MATCH(A1,B:B, 0)), "No Match", VLOOKUP(A1,B:C,2,FALSE))

1
谢谢!这也可以!而且我认为最好使用VLOOKUP(A1, B:C, 2, FALSE)而不是使用固定范围(以适应不断增长的查找数组)?
SNag 2012年

1
是的,只是将此固定范围用作测试。在我的答案中对其进行了编辑。
CustomX 2012年

您不需要IFERROR这里。没有它就可以正常工作,因为只有在匹配时才执行VLOOKUP。
SNag 2012年

糟糕!我似乎已经在错误的列中进行了测试:P实际上,即使没有IFERROR,它也可以正常运行:P
CustomX 2012年

3
它比旧的还旧,但是我只想说我已经使用了多年了,这确实使我感到困惑,因为您从未得到最佳答案。我喜欢它使表格可扩展以比较多个列。
DuffDuff 2015年

36

t.thielemans的回答之后,我所做的只是

=VLOOKUP(A1, B:C, 2, FALSE) 

可以正常工作并满足我的要求,除了返回#N/A不匹配项外;因此,它适用于已知值肯定存在于查找列中的情况。

编辑(基于t.thielemans的评论):

为避免#N/A不匹配,请执行以下操作:

=IFERROR(VLOOKUP(A1, B:C, 2, FALSE), "No Match")

3
改用它IFERROR(VLOOKUP(A1, B:C, 2, FALSE),0)。我也将此添加到了答案中。0是您想要的任何值:)(如果未找到匹配项,则在代码中使用此值将导致不匹配;)
CustomX 2012年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.