用多个标准优化vlookup(索引+匹配)

我有一个12×18的Excel范围,根据12×18范围的页面,行和列标题(分别为标准1,标准2和标准3)从823×20图表( Results!$A:$T )绘制数据。

 ={INDEX(Results!$A:$T, MATCH(1, (criterion1 = Results!$A:$A) * (criterion2 = Results!$B:$B), 0), MATCH(criterion3, Results!$A$1:$T$1, 0))} 

正如你所看到的,并不是那么多的数据,但是当我改变页面标题的时候,我的电脑(带有24GB内存的2GHz Intel Xeon)花费了大约一分钟来更新216(12×18)索引search,米甚至没有创buildsearch的一半。

在我的项目早些时候,这些search只有一个标准,所以我使用了VLOOKUP() ,结果来得很快。 不过,现在我需要根据三个标准来find值,上面的函数是我设法完成这个的最好方法。 然而,这似乎是我得到的长时间计算的责任。 所以我的问题是: 我怎样才能优化VLOOKUP()的多个标准? 我应该调整INDEX(1, MATCH()*MATCH(), MATCH())还是有更快的方法来做到这一点?

以下是12×18索引search的示例(分支名称是最终用户将能够更改的唯一variables):

指数

在823×20表格中,它search(A列实际上没有合并):

在这里输入图像说明

有关多个条件的查找摘要和选项,您可以检查这一点 。

这里我用了很多方法2(这是非数组公式)和方法。

我想你应该试试看他们的速度。

首先,不能简单地通过筛选“结果”表中的列A来完成这项工作吗? 我认为这是最直接的解决scheme。

但是,我已经根据您描述的标准创build了一个示例工作簿。 它可以在这里find

首先,我通过使用高级filter为表单“结果”列A上的唯一值创build了一个独特分支的列表,并将它们放在“列表”上,我在其中创build了一个名为范围listUnqBranches。 我使用该命名范围在Sheet Sheet Sheet A1单元格上创build数据validation下拉列表,以便用户可以select他们想要查看的分支。 我将这个单元格命名为Branch。

接下来我创build了两个命名范围。 rngDate是用这个dynamic的命名范围公式定义的:

 =INDEX(Results!$B:$B,MATCH(Branch,Results!$A:$A,0)):INDEX(Results!$B:$B,MATCH(Branch,Results!$A:$A,0)+COUNTIF(Results!$A:$A,Branch)-1) 

rngLookup是用这个dynamic命名范围公式定义的:

 =INDEX(Results!$C:$C,MATCH(Branch,Results!$A:$A,0)):INDEX(Results!$T:$T,MATCH(Branch,Results!$A:$A,0)+COUNTIF(Results!$A:$A,Branch)-1) 

最后,在表Sheet1中,单元格B2和上下复制的是这个公式:

 =IF(Branch="","",INDEX(rngLookup,MATCH($A2,rngDate,0),MATCH(B$1,Results!$C$1:$T$1,0))) 

请注意,具有命名范围的公式解决scheme取决于工作表“结果”中按分部sorting的数据。 那对你有用吗?