如何在Microsoft Excel中没有额外的列的情况下获取vlookup值的数组?

时间:2016-01-19 05:19:12

标签: excel excel-formula

我有一个列表和一个查找表。列表将在A列中,查找表将在C和D列中.C列中的每个单元格都包含文本并且是唯一的。列D具有列C的每个元素的对应值。列A包含未排序的列表,其中包含来自列C的文本的副本,但没有列在列C之外。下面显示了一个简单的示例

Simple Example

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

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

我知道这可以通过使用

来完成
=vlookup(B9,$C$1:$D$2,2,FALSE)
在列B的每个单元格中

并将列作为数组{$ B $ 1:$ B $ 9}获取。但是,我需要跳过中间人并省略在另一列中有任何内容,因为这需要同时在各种查找表上执行但没有连接,即不是多重查找,我只需要在不同的列表下查看相同的列表A.一组相应的值D.

我完全失去了,看起来很简单,但我已经尝试了几个小时并且进入了圈子。我记得你读过你不能将vlookup输出到一个数组,我也没有太多运气试图使用匹配。

2 个答案:

答案 0 :(得分:1)

您可以通过以下数组形式使用INDEX function来实现数组。由于您的查找表与A1:A9中的值的方向相同,因此您必须TRANSPOSE A1:A9才能实现循环数组处理。

作为数组公式¹,

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

这可以在单个单元格中通过将数组结果包装在SUM function中来证明,这将使数组的元素合计。

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

...返回 14

index_array
数组形式的INDEX函数

¹数组公式需要用 Ctrl + Shift + Enter↵完成。一旦正确进入第一个单元格,就可以像任何其他公式一样向下或向右填充或复制它们。尝试并减少对更接近表示实际数据范围的范围的全列引用。数组公式以对数方式计算计算周期,因此将参考范围缩小到最小值是一种好习惯。有关详细信息,请参阅Guidelines and examples of array formulas

答案 1 :(得分:1)

如果您想继续使用VLOOKUP:

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

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

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

此致