EXCEL的IF函数嵌套超过七层怎么办,一共有18个范围,具体公式如下

If(0<=F2<340,4.5,If(340<=F2<410,4.5,If(410<=F2<480,4.5,If(480<=F2<550,4.5,If(550<=F2<720,4.2,If(720<=F2<790,3.7333,If(790<=F2<860,3.3667,If(860<=F2<930,2.8333,If(930<=F2<1000,2.2667,If(1000<=F2<1070,2.1000,If(1070<=F2<1140,1.6333,If(1140<=F2<1210,1.5667,If(1210<=F2<1280,1.5001,If(1280<=F2<1350,1.4335,If(1350<=F2<1420,1.3669,If(1420<=F2<1490,1.3003,If(1490<=F2<1560,1.2337,If(1560<=F2<1630,1.1671,超过18排))))))))))))))))))

不用这么复杂,找两列(D、E),把比较的对应关系放进去,假设要判断的数据在A1,B1是判断结果的话,那么B1=LOOKUP(A1,D1:E18)


温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-10-08
首先你的公式表述就是错误的,0<=F2<340这样是错误的,应该是and(f2>=0,f2<340)
其次,你的公式并不需要18层处理,你前面的只需要一个if完成4.5值的,你用了4个
而根据你的公式来看,完全可以用lookup函数处理。
=lookup(f2,{0,4.5;550,4.2;720,3.733;790,3.3667;860,2.8333;930,2.2667;1000,2.1;1070,1.6333})
在{}中写{大于等于的那个值,对应的那个值;大于等于的值,对应的值}一个对应值用分号
你自己补充进去就行了。追问

求帮写...

追答

不是已经给你写了吗?后面的你自己按我写的那段公式的规律添加进去就行了。

本回答被提问者采纳
第2个回答  2013-01-19
可以自己在vba 环境 用 select case语句 写个自定义的函数,所有处理都在函数里做 ,表格里所要做的只有一件事 调用自定义的函数 并把数值传进去 很简单的哈
前提条件是 你知道怎样打开 excel 的vba 环境
方法:
工具-->宏-->visual basic 编辑器

在左边的工程资源管理器右键 插入-->模块

编写自定义函数
Function myFun(number) As Double
If 0 < number < 340 Then myFun = 4.5
If 340 <= number < 410 Then myFun = 4.5
......
End Function

在非F2的表格里写 =myFun(F2)
就OK了追问

我按照这个方法做,每个数的结果都是1.1671(就是最后一个范围的)

我的代码是这样的..
Function myFun(number) As Double
If 0 <= number < 340 Then myFun = 4.5
........

If 1490 <= number < 1560 Then myFun = 1.2337

If 1560 <= number < 1630 Then myFun = 1.1671
End Function

追答

哦 你的问题在于 你双击一下表格 看看你的公式里 填的是不是都是F2
我估计 你填的都是F2
其他单元格的公式你是怎么写的 如果是复制的话 那么里面填的值应该都是引用相同的 单元格F2

正确的做法应该是 将光标放到你手写的第一个单元格的右下角 待光标变成黑色实心的粗十字时 向下拖拽鼠标

你试试 看是不是这个问题
我看你的函数写的没有问题 应该不是函数的问题

来自:求助得到的回答
第2个回答  2013-01-19
首先你的
公式
表述就是错误的,0<=F2<340这样是错误的,应该是and(f2>=0,f2<340)
其次,你的公式并不需要18层处理,你
前面
的只需要一个if完成4.5值的,你用了4个
而根据你的公式来看,完全可以用lookup
函数
处理。
=lookup(f2,{0,4.5;550,4.2;720,3.733;790,3.3667;860,2.8333;930,2.2667;1000,2.1;1070,1.6333})
在{}中写{大于等于的那个值,对应的那个值;大于等于的值,对应的值}一个对应值用分号
你自己补充进去就行了。
相似回答