= IFERROR(IF((INDEX(命名为range1,MATCH(命名为range2& A1,命名为range3,0)))<>“”,INDEX(命名为range1,MATCH(命名为range2& A1,命名为range3, 0)), “ - ”), “”)
在这个公式中,我试图使用索引匹配垂直查找值,并在if语句中检查空值。如果它不是空白,我使用非空值在给定单元格中设置它
如何优化配方以降低Excel中的性能开销。 我不想通过将结果存储在变量
中来使用vba答案 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公式可以在其他单元格中使用,并且结果正确。