如何在Microsoft Excel中获得没有额外列的vlookup值数组?

我有一个列表和查找表。 该列表将在列A中,并且查找表将在列C和D中。列C中的每个单元格都包含文本并且是唯一的。 列D对于列C的每个元素具有对应的值。列A包含未分类的列表,其具有来自列C的文本的重复但没有列C以外的任何内容。下面示出一个简单的例子

简单的例子

我最终想要的是一个数组,其中包含从表中查找所有列A对应的值。所以在这个例子中,我想

{1,2,1,2,2,2,1,1,2} 

我知道这可以通过使用

 =vlookup(B9,$C$1:$D$2,2,FALSE) 

在列B的每个单元格中,并以数组{$ B $ 1:$ B $ 9}的forms获取列。 但是,我需要跳过中间的人,并省略了另一列中的任何东西,因为这需要在各种查找表上同时执行,但没有连接,即不是多次查找,我只需要看一下不同的同一个列表A一组相应的值D.

我完全失败了,看起来很简单,但我一直在努力工作数小时, 我记得读到,你不能输出vlookup到一个数组,我没有太多的运气,试图使用匹配。

如果你想继续使用VLOOKUP:

VLOOKUP(T(IF(1,+A1:A9)),C1:D2,2,0)

这里使用了T,因为A1:A9中的值是文本,而不是数字(否则我们将使用N – 包含混合数据types的范围需要不同的方法)。

http://excelxor.com/2014/09/05/index-returning-an-array-of-values/

问候

你可以用下面的数组forms使用INDEX函数来实现你的数组。 由于查找表的方向与A1:A9中的值相同,因此必须使用TRANSPOSE A1:A9来实现循环数组处理。

作为一个数组公式1,

 =INDEX((TRANSPOSE(A1:A9)=C1:C2)*(D1:D2), , ) 

这可以在单个单元格中通过将数组结果包装在一个SUM函数中进行certificate,该函数将总和该数组的元素。

 =SUM(INDEX((TRANSPOSE(A1:A9)=C1:C2)*(D1:D2), , )) 

…返回14

index_array
数组中的INDEX函数


¹ 数组公式需要使用Ctrl + Shift + Enter 来完成。 一旦正确input第一个单元格,就可以像任何其他公式一样向下或向右填充或复制它们。 尝试和减less您的全列引用范围更接近代表实际数据的范围。 数组公式将计算周期对数化,所以最好将参考范围缩小到最小。 有关更多信息,请参阅数组公式的示例 。