重用公式驱动会导致excel中的if语句

时间:2014-06-04 08:36:32

标签: excel optimization excel-formula

= IFERROR(IF((INDEX(命名为range1,MATCH(命名为range2& A1,命名为range3,0)))<>“”,INDEX(命名为range1,MATCH(命名为range2& A1,命名为range3, 0)), “ - ”), “”)

在这个公式中,我试图使用索引匹配垂直查找值,并在if语句中检查空值。如果它不是空白,我使用非空值在给定单元格中设置它

如何优化配方以降低Excel中的性能开销。 我不想通过将结果存储在变量

中来使用vba

1 个答案:

答案 0 :(得分:1)

最耗时的位是Match(),因此避免重复相同的匹配是关键。你可以

  • 将索引/匹配放在辅助单元格中,然后使用公式

    =IFERROR(IF(B1<>"",B1,"-"),"")
    

这样,索引/匹配只会计算一次。

  • 将Match放入指定的公式中。如果您保持对自己的智慧,命名公式可以使用相对单元格引用。选择您希望公式去的单元格,然后使用公式

    创建命名范围“NamedRange4”
    =MATCH(named range2&A1,named range3,0)
    

然后在所选单元格中使用此公式:

=IFERROR(IF((INDEX(named range1,NamedRange4))<>"",INDEX(named range1,NamedRange4),"-"),"")

匹配将仅计算一次,结果存储在指定范围内。使用NamedRange4的相对单元格引用,IfError公式可以在其他单元格中使用,并且结果正确。