ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: qhm

如何实现函数IF的嵌套超过七层?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2008-7-30 13:11 | 显示全部楼层
供应商采购单部门部门采购日期
东利化纤  615-870272615总五FALSE2008-7-10

=IF(C769="611","总一",IF(C769="612","总二",IF(C769="613","总三",IF(C769="615","总五",IF(C769="32B","户外",IF(C769="32J","开发",IF(C769="32M","精密",IF(C769="61X","德菲克"))))))))&IF(C769="32X","德菲克",IF(C769="61B","开发部"))

用公式后,怎么会多了一个FALSE?怎么取消啊?

TA的精华主题

TA的得分主题

发表于 2004-3-5 20:58 | 显示全部楼层
以下是引用lumben在2004-3-5 19:23:00的发言:
IF函数的7层限制是微软给定的,除了微软,谁也改变不了这个“事实”。 所谓的“突破”和“实现”只是“变相”做到的,并非真正地达到了7层以上。 (如果不用多个单元,不用其它函数配合,你能做得到吗?)
将其中的IF部分定义为名称就可以真正超过7层嵌套。

TA的精华主题

TA的得分主题

发表于 2002-10-21 22:40 | 显示全部楼层

一个单元格也可以实现!

=IF(A1=1,"A",IF(A1=2,"B",IF(A1=3,"C",IF(A1=4,"D",IF(A1=5,"E",IF(A1=6,"F",IF(A1=7,"G",IF(A1=8,"H",""))))))))&IF(A1=9,"I",IF(A1=10,"J",IF(A1=11,"K",IF(A1=12,"L",IF(A1=13,"M",IF(A1=14,"N",IF(A1=15,"O",IF(A1=16,"P",""))))))))& IF(A1=17,"Q",IF(A1=18,"R",IF(A1=19,"S",IF(A1=20,"T",IF(A1=21,"U",IF(A1=22,"V",IF(A1=23,"W",IF(A1=24,"X",""))))))))&IF(A1=25,"Y",IF(A1=26,"Z",""))

TA的精华主题

TA的得分主题

发表于 2002-10-21 23:30 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2002-10-21 17:55 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2002-10-20 22:52 | 显示全部楼层
論譠中討論過,你試著搜索看看。

TA的精华主题

TA的得分主题

发表于 2008-12-8 15:34 | 显示全部楼层
原帖由 curieju 于 2007-8-23 15:48 发表
如果是数字呢?怎么改呀。我用这个方法只能选择是文字的


如果要数字,在后边辅助一个 *1 即可作为数字处理。

比如:
=(IF(B46>0,B46,
IF(AND(B46=0,H9=0,L9=0,P9=0,R9=0,H28=0,K28=0),E9,
IF(AND(B46=0,H9>0,L9=0,P9=0,R9=0,H28=0,K28=0),(H9+B9)*3.1416+E9,
IF(AND(B46=0,H9=0,L9>0,P9=0,R9=0,H28=0,K28=0),(L9+B9)*3.1416+E9,
IF(AND(B46=0,H9=0,L9=0,P9=0,R9=0,H28>0,K28=0),(I28*2+B10)*3.1416*H28+J28+E9,
IF(AND(B46=0,H9=0,L9=0,P9=0,R9=0,H28=0,K28>0),(L28*2+B10)*3.1416*K28+M28+E9))))))
&
IF(AND(B46=0,H9=0,L9=0,P9>0,R9=0,H28=0,K28=0),P9-15+(30+B9)*3.1416*0.25+E9-15,
IF(AND(B46=0,H9=0,L9=0,P9=0,R9>0,H28=0,K28=0),E9-15+(30+B9)*3.1416*0.25+R9-15,
IF(AND(B46=0,H9=0,L9=0,P9>0,R9>0,H28=0,K28=0),P9-15+(30+B9)*3.1416*0.25*2+E9-15-15+R9-15,))))
*1

TA的精华主题

TA的得分主题

发表于 2009-2-19 21:39 | 显示全部楼层
好帖,别沉了,让新来的人也学学。
以下引用是64楼的留言:
如果采用“=”运算符进行判断,是可以做到用“&”连接,但如果是计算个人所得税(共分九级,刚刚超过了7层嵌套)就不行了,比如: A1是薪金,B1输入公式: =IF(A1>=100000,0.45,IF(A1>=80000,0.4,IF(A1>=60000,0.35,IF(A1>=40000,0.3,IF(A1>=20000,0.25,IF(A1>=5000,0.2,IF(A1>=2000,0.15,IF(A1>=500,0.1,""))))))))&IF(A1>0,0.5,0) 在A1中输入大于500以上,那么B1的计算结果就有误。但采用定义名称的方法就不存在此种错误。

对于64楼计算所得税的公式,其实是忽视了一点,当“&”前的条件成立时,“&”后的条件也成立,当然也就有了“前结果&后结果”,如“0.4&0.5=0.40.5”了,这就是64楼的朋友所说的有误。
其实只要将“&”后的IF(A1>0,0.5,0)改成IF(AND(A1<500,A1>0),0.5,"")就不会有错误了。

只要“&”连接的各部分不要同时成立就OK了。

TA的精华主题

TA的得分主题

发表于 2009-4-12 18:14 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2009-4-17 23:19 | 显示全部楼层
★ 献给初学者:《循序渐进学Excel》视频教程 ★
一个单元格也可以实现!
=IF(A1=1,"A",IF(A1=2,"B",IF(A1=3,"C",IF(A1=4,"D",IF(A1=5,"E",IF(A1=6,"F",IF(A1=7,"G",IF(A1=8,"H",""))))))))&IF(A1=9,"I",IF(A1=10,"J",IF(A1=11,"K",IF(A1=12,"L


这个方法太妙了,谢谢提供
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-25 02:35 , Processed in 0.032659 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表