用多个标准优化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的数据。 那对你有用吗?