Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 将嵌套索引匹配函数转换为VBA_Excel_Excel Formula_Excel 2013_Vba - Fatal编程技术网

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

Excel 将嵌套索引匹配函数转换为VBA,excel,excel-formula,excel-2013,vba,Excel,Excel Formula,Excel 2013,Vba,我使用这个公式来匹配两个日期,在sheet3和sheet2之间,然后在日期匹配时打印相应的值。数百万行来运行它,这个公式使得文件太大,无法计算。 =IF(ISNA(INDEX(Sheet3!$A$1:$G$60,MATCH(A2,Sheet3!$A$1:$A$60,0),6)),“”,INDEX(Sheet3!$A$60,MATCH(A2,Sheet3!$A$1:$A$60,0),6))在这个公式中使用完全相同的INDEX/MATCH函数两次,而当找不到匹配项时,可以使用函数IFERROR返回空

我使用这个公式来匹配两个日期,在sheet3和sheet2之间,然后在日期匹配时打印相应的值。数百万行来运行它,这个公式使得文件太大,无法计算。

=IF(ISNA(INDEX(Sheet3!$A$1:$G$60,MATCH(A2,Sheet3!$A$1:$A$60,0),6)),“”,INDEX(Sheet3!$A$60,MATCH(A2,Sheet3!$A$1:$A$60,0),6))
在这个公式中使用完全相同的INDEX/MATCH函数两次,而当找不到匹配项时,可以使用函数IFERROR返回空字符串。请参见下面的代码示例:

=IFERROR(INDEX(Sheet3!$A$1:$G$60,MATCH(A2,Sheet3!$A$1:$A$60,0),6)),"")
=IFERROR(INDEX(Sheet3!$A$1:$G$60,MATCH(A2,Sheet3!$A$1:$A$60,1),6)),"")
为了进一步优化公式,您可以指定match函数的第三个参数(match_type),使公式在列Sheet3上执行二叉树搜索!A,即使在很大的范围内,这样计算速度也会快得多。但要使这项工作,首先需要对列Sheet3进行排序!A按升序排列。请参见下面的代码示例:

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

你的问题是?这个公式在vba代码中是什么?这是我在vba中的问题。使用Range对象的
.formula
.FormulaR1C1
属性也是一样的。但是,如果您想使用VBA来加速该过程,一种方法是使用数组。因此,我们的想法是将您处理的数据传递给它,并使用数组进行匹配,然后将值返回到范围。在那条路线上有许多邮局。您还可以使用
字典
对象。