Excel 2007:查找搜索多列的单元格值

时间:2012-12-04 03:01:54

标签: excel vlookup

我想开发一个像这样的简单函数

搜索(值,范围,偏移)

给出下表

     A    B    C   

1    10   A    desc for 10a
2    20   B    desc for 20b
3    30   C    desc for 30c

将返回以下内容

Search(10; a1:c3; 3) -> desc for 10a
Search(A; a1:c3; 3)  -> desc for 10a

Search(20; a1:c3; 3) -> desc for 20a
Search(B; a1:c3; 3)  -> desc for 20a
Search(desc for 20a; a1:c3; 3)  -> desc for 20a

也就是说,它应该允许我搜索范围内的任何列,而不仅仅是像VLookup那样的第一个列

1 个答案:

答案 0 :(得分:1)

这取决于您的列的可预测性。如果没有区别特征,那么你将度过艰难时期。但是,如果您可以从搜索字符串中确定哪个列将包含匹配项,那么您就可以了。在您的示例中,数字值仅存在于A列中,单个字母字符串仅存在于B列中,而较长的字符串仅存在于C列中。在这种情况下,您可以使用以下两个公式:

将搜索值放在E1中。在F1中:=IF(ISNUMBER($E1),0,IF(LEN($E1)=1,1,2))

在G1:=VLOOKUP($E1,OFFSET($A$1,0,$F1,10,(3-$F1)),(3-$F1),FALSE)

您可以将两者合并为一个公式,将所有$ F1替换为完整的公式。为了清晰起见,我将它们分开在这里。

此外,偏移公式中的10需要与查找范围中的总行数相对应。