将嵌套索引匹配函数转换为VBA

时间:2014-05-14 02:58:53

标签: excel-vba excel-formula excel-2013 vba excel

我使用此公式匹配sheet3和sheet2之间的两个日期,然后在日期匹配时打印相应的值。运行数百万行,这个公式使文件太大,无法计算 =IF(ISNA(INDEX(Sheet3!$A$1:$G$60,MATCH(A2,Sheet3!$A$1:$A$60,0),6)),"",INDEX(Sheet3!$A$1:$G$60,MATCH(A2,Sheet3!$A$1:$A$60,0),6))

1 个答案:

答案 0 :(得分:1)

在此公式中,您使用完全相同的索引/匹配函数两次,而不是在找不到匹配项时,可以使用函数IFERROR返回空字符串。请参阅下面的代码示例:

=IFERROR(INDEX(Sheet3!$A$1:$G$60,MATCH(A2,Sheet3!$A$1:$A$60,0),6)),"")

为了进一步优化您的公式,您可以指定匹配函数的第三个参数(match_type),使公式在Sheet3列上进行二叉树搜索!A,即使对于非常大的范围,它也会以这种方式计算得更快。但为了使这项工作,首先你需要按升序对Column3!A列进行排序。请参阅下面的代码示例:

=IFERROR(INDEX(Sheet3!$A$1:$G$60,MATCH(A2,Sheet3!$A$1:$A$60,1),6)),"")