Excel中IF嵌套层数过多,求解决方法

A列为员工工号,B列为工种,C列为员工的考核项目完成值,需计算D列为考核项目得分

员工有甲、乙、丙、丁、戊、己、庚、辛八种工种,考核标杆分别为11,12,13,14,15,16,17,18,达到标杆得8分,低于标杆得5分。

如:3001号员工是丙工种,丙工种考核标杆为13,该员工考核项目完成值是17,达到标杆则得分为8分。

故D列我的公式为:
=IF(B1="甲",IF(C3>=11,8,5),IF(B3="乙",IF(C3>=12,8,5),IF(B3="丙",IF(C3>=13,8,5),IF(B3="丁",IF(C3>=14,8,5),IF(B3="戊",IF(C3>=15,8,5),IF(B3="己",IF(C3>=16,8,5),IF(B3="庚",IF(C3>=17,8,5),IF(B3="辛",IF(C3>=18,8,5))))))))
由于嵌套层数超过7层无法实现。

我百度搜索到可以使用lookup和vlookup公式替代if嵌套。
于改成:
=VLOOKUP(B1,{"甲",IF(C3>=11,8,5);"乙",IF(C3>=12,8,5);"丙",IF(C3>=13,8,5);"丁",IF(C3>=14,8,5);"戊",IF(C3>=15,8,5);"己",IF(C3>=16,8,5);"庚",IF(C3>=17,8,5);"辛",IF(C3>=18,8,5)},2,)
但是好像vlookup不支持嵌套if,总是报错。

还求大神帮助提供解决办法。

第1个回答  2014-04-24
两个函数就够了:
=IF(C3>=FIND(B3,"甲乙丙丁戊己庚辛")+10,8,5)追问

非常感谢。再进一步请教一下,若得分值为根据不同工种变化,公式又应如何设置呢。如低于标杆得5分,达到标杆得8+(完成值-工种标杆)的得分。上面的公式该怎么改好呢?

追答

=IF(C3>=FIND(B3,"甲乙丙丁戊己庚辛")+10,C3-2-FIND(B3,"甲乙丙丁戊己庚辛"),5)

本回答被网友采纳
第2个回答  2014-04-24
=IF(B3="","",IF(C3>=FIND(B3,"甲乙丙丁戊己庚辛")+10,8,5))
第3个回答  2014-04-24
=IF(C3>=VLOOKUP(B3,{"甲",11;"乙",12;"丙",13;"丁",14;"戊",15;"己",16;"庚",17;"辛",18},2,),8,5)
第4个回答  2014-04-24
多层次多区间判断取值问题,这正是我最近解决的一大问题,不用if嵌套,即使你有100中情况也没关系,都可以解决。把表发上来。
第5个回答  2014-04-24
追问

非常感谢。再进一步请教一下,若得分值为根据不同工种变化,公式又应如何设置呢。如低于标杆得5分,达到标杆得8+(完成值-工种标杆)的得分。上面的公式该怎么改好呢?

相似回答