![添加动态命名范围时嵌套 IF 返回 0](https://linux22.com/image/1491399/%E6%B7%BB%E5%8A%A0%E5%8A%A8%E6%80%81%E5%91%BD%E5%90%8D%E8%8C%83%E5%9B%B4%E6%97%B6%E5%B5%8C%E5%A5%97%20IF%20%E8%BF%94%E5%9B%9E%200.png)
我有一个嵌套的 IF 语句,它似乎运行良好。
=IF(INDEX(F$3:F$523,MATCH(OFFSET(Z6,0,L6-2),OUID,0))="X", OFFSET(Z6,0,L6-2,), IF(INDEX(F$3:F$523,MATCH(OFFSET(Z6,0,L6-3),OUID,0))="X", OFFSET(Z6,0,L6-3), IF(INDEX(F$3:F$523,MATCH(OFFSET(Z6,0,L6-4),OUID,0))="X", OFFSET(Z6, 0, L6-4), IF(INDEX(F$3:F$523,MATCH(OFFSET(Z6,0,L6-5),OUID,0))="X", OFFSET(Z6,0,L6-5), IF(INDEX(F$3:F$523,MATCH(OFFSET(Z6,0,L6-6),OUID,0))="X", OFFSET(Z6,0,L6-6), "ERROR")))))
其中 OUID 是一个动态命名范围,定义为:
=OFFSET('DLH'!$B$3,0,0,COUNTA('DLH'!$B:$B),1)
这按预期工作并返回相应的单元格。但是,如果我尝试将公式中的 F$3:F$523 元素替换为名为“Report”的动态命名范围,其定义为:
=OFFSET('DLH'!$F$3,0,0,COUNTA('DLH'!$F:$F),1)
它开始返回“0”,而不是单元格中的文本字符串。新的无效公式如下所示:
=IF(INDEX(Report,MATCH(OFFSET(Z5,0,L5-2),OUID,0))="X", OFFSET(Z5,0,L5-2,), IF(INDEX(Report,MATCH(OFFSET(Z5,0,L5-3),OUID,0))="X", OFFSET(Z5,0,L5-3), IF(INDEX(Report,MATCH(OFFSET(Z5,0,L5-4),OUID,0))="X", OFFSET(Z5, 0, L5-4), IF(INDEX(Report,MATCH(OFFSET(Z5,0,L5-5),OUID,0))="X", OFFSET(Z5,0,L5-5), IF(INDEX(Report,MATCH(OFFSET(Z5,0,L5-6),OUID,0))="X", OFFSET(Z5,0,L5-6), "ERROR")))))
这两个动态命名范围所做的就是允许更改行数。上面的公式位于单元格 F5 中。我认为这可能是一个问题,因为报告动态命名范围引用与原始单元格相同的列,但即使我将公式移动到不同的单元格,它仍然返回 0。
当我使用 Excel 中的评估函数并将其与工作版本进行比较时,一切似乎都运行良好,它甚至产生了正确的最终单元格引用,只是在最后阶段它失败并返回 0。
有任何想法吗?
谢谢。
答案1
我的猜测是,$B:$B 中填充的单元格数量可能与 $F:$F 中填充的单元格数量不同,从而导致 OUID 和报告长度不同,这可能会搞砸您的索引匹配功能。