Excel:命名范围内的Vlookup并返回范围

时间:2015-10-13 18:48:35

标签: excel offset vlookup named named-ranges

我需要找到一种方法来搜索命名区域中的值并返回该范围旁边的列。原因很简单:我在列A中使用列表验证和命名范围。在此列表中有完整的产品类型名称(例如继电器,接触器,机箱),我需要从B列返回一个简短描述(ex .Rly,Cont,Encl)这样当用户搜索列表时,很容易找到他要找的东西。我知道我可以将我的范围扩展到$ A:$ B但如果我这样做,那么$ B的所有值都将包含在列表中......

这显示了一种找出我需要的方法:= VLOOKUP(A1;" RANGE + 1C",2,0) 我用偏移和索引尝试了很多方法但是找不到这样做的方法......我甚至认为可以用相对引用来做(例如= VLOOKUP(A1,描述; 1&#34) ; RC [1]",0)或类似的东西...... 还在谷歌寻找一些信息,但它似乎是一个非常陌生的东西...

我需要在公式中而不是在VBA中执行此操作。

以下是示例文件的链接: http://www.filedropper.com/descriptionbuilder

任何提示?

谢谢!

2 个答案:

答案 0 :(得分:2)

您可能想要的而不是VLOOKUP是MATCH& INDEX组合。

MATCH是一个函数,它告诉您从所选列表中找到重复值的行号 - 它就像VLOOKUP的一半。 INDEX是一个函数,它根据你给它的位置#从列表中提取一个值 - 它就像VLOOKUP的另一半。

我在A列中看到您的一个范围,您的ID数据是描述 - 我将假设B列没有与您的系列对齐的“命名”范围。我假设列B有其他数据,并且列A在第一行之后的某处开始[具体来说,我假设它从第5行开始]。公式如下:

=INDEX(B:B,ROW(A5)-1+MATCH(A1,Description,0))

这说:在Description中找到与A1中的文本匹配的行#。然后添加A5#1的行#(然后将描述的顶部与B列的顶部对齐)。然后从B列中提取该值。

使用VLOOKUP和OFFSET的替代方法

另一种方法是首先定义描述中有多少行,然后使用该信息和OFFSET函数,创建一个新的区域,该区域基本上代表描述但跨越A& A列。 B而不仅仅是A列。这看起来如下(再次,假设说明从A5开始):

=VLOOKUP(A1,OFFSET(A5,0,0,ROWS(Description),2),2,0)

这表示:计算描述中有多少行。使用OFFSET构建一个数组,该数组从A5开始,包含描述中的行数和2列。 (因此在描述中有3个项目,这将是A5:B7)。然后在VLOOKUP中使用该新范围,并尝试在A列中找到A1描述区域,并从B列中的该行返回结果。

答案 1 :(得分:1)

您可以使用Offset将命名范围扩展一列,然后将其输入Vlookup类似的内容:

=VLOOKUP(C1,OFFSET(RANGE,0,0,,1+COLUMNS(RANGE)),1+COLUMNS(RANGE))

为了测试是,我在A列中创建了一个命名范围(称为" RANGE"),我在列B中将值放在与命名范围相邻的位置,在C1中放置一个查找值并输入上面的值式。它成功地检索了所需的值。

编辑:我认为Grade'培根的答案非常好,可能是解决这一特定问题的最佳方法,但我觉得如何扩展参考资料对我有用一个命名范围而不改变名称本身,所以我保持这个答案。