重复使用公式驱动的结果在Excel中的if语句

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

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

我怎样才能优化我的公式,以减less在Excel中的性能开销。 我不想通过将结果存储在variables中来使用vba

最耗时的位是Match(),所以避免重复同一个匹配是关键。 您可以

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

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

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

  • 将匹配放入一个命名的公式。 如果你对你有所了解,命名公式可以用相对单元格引用。 select您希望公式的单元格,然后使用公式创build一个命名范围“NamedRange4”

     =MATCH(named range2&A1,named range3,0) 

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

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

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