我有一个列表和一个查找表。列表将在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}获取。但是,我需要跳过中间人并省略在另一列中有任何内容,因为这需要同时在各种查找表上执行但没有连接,即不是多重查找,我只需要在不同的列表下查看相同的列表A.一组相应的值D.
我完全失去了,看起来很简单,但我已经尝试了几个小时并且进入了圈子。我记得你读过你不能将vlookup输出到一个数组,我也没有太多运气试图使用匹配。
答案 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 。
¹数组公式需要用 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/
此致