帮我在原有的公式中在保持输出结果不变的情况下帮我优化且重构以下公式,需要简洁 =IFERROR(VLOOKUP(LOWER(AL$8),INDIRECT("B"&MATCH(":BEGIN",$B:$B,0)+$AK9*(COUNTA($B:$B)/IF(COUNTIF($B:$B,":BEGIN")=COUNTIF($B:$B,":END"),COUNTIF($B:$B,":BEGIN"),"原始数据错误"))-(COUNTA($B:$B)/IF(COUNTIF($B:$B,":BEGIN")=COUNTIF($B:$B,":END"),COUNTIF($B:$B,":BEGIN"),"原始数据错误"))&":C"&MATCH(":END",$B:$B,0)+$AK9*(COUNTA($B:$B)/IF(COUNTIF($B:$B,":BEGIN")=COUNTIF($B:$B,":END"),COUNTIF($B:$B,":BEGIN"),"原始数据错误"))),2,FALSE),"无数据")
时间: 2023-06-18 19:07:08 浏览: 84
以下是重构后的公式:
```
=IFERROR(VLOOKUP(LOWER(AL$8),INDIRECT("B"&MATCH(":BEGIN",$B:$B,0)+(AK9-1)*COUNTIF($B:$B,":BEGIN")+1&":C"&MATCH(":END",$B:$B,0)+(AK9-1)*COUNTIF($B:$B,":BEGIN")),2,FALSE),"无数据")
```
主要的优化和重构包括:
1. 使用 COUNTIF 函数来计算 ":" 开头的单元格数量,避免了使用 IF 函数计算的复杂性;
2. 使用乘法计算偏移量,避免了使用 IF 函数计算的复杂性;
3. 简化了字符串拼接的过程,将偏移量直接作为参数传递给 INDIRECT 函数;
4. 移除了重复的错误处理,避免了代码冗余。
阅读全文