参数页!I22*VLOOKUP(G23,钢铁打分卡!$G$11:$K$64,5,0)
时间: 2023-12-01 19:04:31 浏览: 50
这段公式中包含了 VLOOKUP 函数,它的作用是在指定的数据范围内查找某个值,并返回该值所在行的指定列的值。
具体来说,这个公式的含义是:在“钢铁打分卡”工作表的 G11 到 K64 范围内查找 G23 单元格中的值,并返回所在行的第 5 列的值。其中,“钢铁打分卡!$G$11:$K$64”表示“钢铁打分卡”工作表中 G11 到 K64 的数据范围,“5”表示要返回该行的第 5 列的值,“0”表示精确匹配,即只有在查找值与数据范围中的值完全匹配时才返回结果。
最终,该公式的计算结果将返回一个值,该值为该查找值所在行的第 5 列的值。
相关问题
帮我优化以下公式 =IFERROR(VLOOKUP(LOWER(AL$8),INDIRECT("B"&MATCH(":BEGIN",$B:$B,0)+$AK10*(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)+$AK10*(COUNTA($B:$B)/IF(COUNTIF($B:$B,":BEGIN")=COUNTIF($B:$B,":END"),COUNTIF($B:$B,":BEGIN"),"原始数据错误"))),2,FALSE),"无数据")
这个公式比较复杂,可以考虑拆分成多个较小的部分,以便更好地理解和维护。以下是优化后的公式:
1. 首先,将常量抽取出来,以便在后面的计算中重复使用:
```
COUNTA_B = COUNTA($B:$B)
COUNTIF_BEGIN = COUNTIF($B:$B,":BEGIN")
COUNTIF_END = COUNTIF($B:$B,":END")
IF_ERROR = "无数据"
INDIRECT_START = "B"&MATCH(":BEGIN",$B:$B,0)
INDIRECT_END = ":C"&MATCH(":END",$B:$B,0)
```
2. 接下来,将公式中的重复计算抽取出来,以便减少计算次数:
```
OFFSET_FACTOR = COUNTA_B / IF(COUNTIF_BEGIN = COUNTIF_END, COUNTIF_BEGIN, "原始数据错误")
OFFSET_START = AK10 * OFFSET_FACTOR
OFFSET_END = OFFSET_START - COUNTA_B / IF(COUNTIF_BEGIN = COUNTIF_END, COUNTIF_BEGIN, "原始数据错误")
```
3. 将公式中的逻辑判断抽取出来,以便更好地理解和维护:
```
IF_ERROR_VLOOKUP = IFERROR(
VLOOKUP(
LOWER(AL$8),
INDIRECT(
INDIRECT_START + OFFSET_START & INDIRECT_END + OFFSET_END
),
2,
FALSE
),
IF_ERROR
)
```
4. 将所有的部分组合起来,得到最终的公式:
```
=IF_ERROR_VLOOKUP
```
总体来说,这个优化后的公式更易于理解和维护,同时还可以减少计算次数,提高性能。
帮我改进以下公式 =IFERROR(VLOOKUP(LOWER(AL$8),INDIRECT("B"&MATCH(":BEGIN",$B:$B,0)+$AK10*(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)+$AK10*(COUNTA($B:$B)/IF(COUNTIF($B:$B,":BEGIN")=COUNTIF($B:$B,":END"),COUNTIF($B:$B,":BEGIN"),"原始数据错误"))),2,FALSE),"无数据")
您好,根据您提供的公式,我看到其中有一些重复的内容,可以简化一下。以下是修改后的公式:
```
=IFERROR(VLOOKUP(LOWER(AL$8),INDIRECT("B"&MATCH(":BEGIN",$B:$B,0)&":C"&MATCH(":END",$B:$B,0)),$AK10*(COUNTA($B:$B)/IF(COUNTIF($B:$B,":BEGIN")=COUNTIF($B:$B,":END"),COUNTIF($B:$B,":BEGIN"),"原始数据错误"))+1,FALSE),"无数据")
```
主要修改如下:
1. 将计算行数的部分提取出来,避免重复计算。
2. 将第三个参数改为偏移量,即直接计算偏移的列数,避免重复计算和拼接字符串。
希望对您有所帮助!
阅读全文