惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

K
Kaspersky official blog
T
Threat Research - Cisco Blogs
N
News and Events Feed by Topic
Hacker News: Ask HN
Hacker News: Ask HN
Project Zero
Project Zero
Application and Cybersecurity Blog
Application and Cybersecurity Blog
博客园 - 叶小钗
Security Latest
Security Latest
Spread Privacy
Spread Privacy
aimingoo的专栏
aimingoo的专栏
N
News and Events Feed by Topic
Webroot Blog
Webroot Blog
U
Unit 42
Cyberwarzone
Cyberwarzone
小众软件
小众软件
Scott Helme
Scott Helme
Engineering at Meta
Engineering at Meta
Microsoft Security Blog
Microsoft Security Blog
T
The Blog of Author Tim Ferriss
A
About on SuperTechFans
爱范儿
爱范儿
S
Schneier on Security
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Schneier on Security
Schneier on Security
Latest news
Latest news
GbyAI
GbyAI
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Simon Willison's Weblog
Simon Willison's Weblog
The Register - Security
The Register - Security
WordPress大学
WordPress大学
博客园_首页
Blog — PlanetScale
Blog — PlanetScale
PCI Perspectives
PCI Perspectives
Jina AI
Jina AI
AI
AI
NISL@THU
NISL@THU
I
Intezer
G
GRAHAM CLULEY
B
Blog
S
Secure Thoughts
IT之家
IT之家
宝玉的分享
宝玉的分享
Recent Announcements
Recent Announcements
Y
Y Combinator Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
酷 壳 – CoolShell
酷 壳 – CoolShell
有赞技术团队
有赞技术团队
V2EX - 技术
V2EX - 技术
Recorded Future
Recorded Future
Hacker News - Newest:
Hacker News - Newest: "LLM"

博客园 - 月异星邪

Anaconda官方网站下载慢的解决方法 定时任务调度自动提醒企业微信 天高云淡 leobbs皮肤 - 月异星邪 - 博客园 仿QQ信息弹出 - 月异星邪 - 博客园 http://www.xywq.com/files/ganzhi11.htm IIS6 Http压缩配置方法 - 月异星邪 - 博客园 IIS6,SESSION超时时间过短的解决(未测试) 常用asp.net代码 - 月异星邪 - 博客园 在ASP.NET中使用Session常见问题集锦 ASP.NET 2.0:使用用户控件和定制的Web部件个人化你的门户网站 ASP.NET中常用的文件上传下载方法 Infragistics中WebGrid的MultiColumn Headers设计 轻松实现UltraWebGrid中的分页控制 http://www.bo-blog.com/index.php?l=zh_tw&mod=skins ASP.NET中常用的文件上传下载方法 ASP.NET 2.0中使用webpart系列控件 ASP.NET2.0 WebPart实例教程 数字转换为大写人民币(附源码) 用ASP.NET 2.0实现AJAX风格的Web开发
如何实现函数IF的嵌套超过七层?
月异星邪 · 2007-05-28 · via 博客园 - 月异星邪

Excel 中的函数嵌套最多可有 7 层。
对于 IF(),有些时候可以配合AND(),OR()来解决多层次问题。
不过有些时候用它们是解决不了的,这就需要我们考虑其它的方法。
最开始,我还以为只有 IF() 函数有 7 层嵌套问题,后来用想用 CHOOSE() 替换 IF() 时,才发现 CHOOSE() 也不能做大于 7 层的嵌套。
最后得出:Excel 中可能所有函数都不能超过7层嵌套。

------------------------
对 IF() 7 层嵌套的解决:
------------------------
先看看 IF() 函数的语法:
IF(logical_test,value_if_true,value_if_false),
这里要研究的是 logical_test ,它只能返回 TRUE 或 FALSE ,
而 Excel 中 TRUE 值为1, FALSE 值为0,不过要想体现出 1 和 0 ,
必须对 TRUE 和 FALSE 作加 0 或 乘 1 之类的操作(也就是说把类型转换一下)。
再一点,也是非常关键的一点是:
对于IF()结构来说,只要遇到 logical_test 为 TRUE(按照条件的顺序) ,则结束判断。
原理清楚了之后,就开始实际操作了:
首先,把条件按顺序陈列出来。
比如:A1<-50,-50<=A1<0,A1=0,0<A1<50,...
相当于:IF(A1<-50,...,IF((A1>=-50)*(A1<0),...,IF(A1=0,...,IF((A1>0)*(A1<50),...,...))))
说明:这里的 * 含义为 AND , 之所以用它,是因为将用到数组公式。
写到这里就差不多了,最后要做的就是:使条件和结果对应起来。
根据刚才说的,只要遇到条件为 TRUE(按照条件的顺序) ,则结束判断。
所以我们要找到第一个满足条件的位置。
先给个例子:
{=MIN(IF({TRUE,FALSE,TRUE,TRUE,FALSE,FALSE,TRUE,FALSE,TRUE}+0={1,1,1,1,1,1,1,1,1},{1,2,3,4,5,6,7,8,9}))}
这里的{TRUE,FALSE,TRUE,TRUE,FALSE,FALSE,TRUE,FALSE,TRUE}即为条件,共有九个;
{1,1,1,1,1,1,1,1,1}相当于一个全是 TRUE 的数组(这是为了方便,完全可以用TRUE替换);
{1,2,3,4,5,6,7,8,9}是满足条件对应的操作(这里只是简单的数值)。
MIN()目的是为了找到第一个满足条件的位置。
这里有个问题,就是如果条件都为 FALSE 时,则 MIN() 返回0,
这是因为没有与全不满足条件对应的项,
如果再加个判断条件,就显得冗余了,
简单的办法是对单元个设置 自定义数字格式 , 对 0 位置设置格式即可。
比如:...;...;"数据未找到"

上面的例子是一个标准的IF()结构,如果想让条件为 FALSE 时,执行相应的操作,只要把{1,1,1,1,1,1,1,1,1}中的1换成0即可

IF(条件,真,假)&IF(条件,真,假)&
IF(条件,真,假)&..............
其中假为空,即输入""(两个双引号)

=(I3/D3>=73.08)*7+(AND(I3/D3<73.08,I3/D3>=69.03))*6.5+(AND(I3/D3<69.03,I3/D3>=64.5))*6

一个单元格实现
=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(A
1=22,"V",IF(A1=23,"W",IF(A1=24,"X",""))))))))&IF(A1=25,"Y",IF(A1=26,"Z",""))(数组形式输入)。

将七层之外的IF语句,放在另外的单元格内来处理,例:C5=if(if,...,(if...),B5))),B5单元格就是存放七层之外的IF语句。依此类推,可以实现在数据库语言中CASE语句的功能。

当然,对于初学者会有一些困难。

这里给出一个解决IF函数嵌套超出范围的方法,可能比较容易使初学者看懂。其思路是:一个单元格做不了的事,分给两个或更多的单元格来做,文字内容是这样,函数内容也是这样。

例子:假如 A1=1,则 B1=A;A1=2,则 B1=B …… A1=26,则 B1=Z

解决方法如下:
B1 = 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",C1))))))))
C1 = 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",D1))))))))
D1 = 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",E1))))))))
E1 = IF(A1=25,"Y",IF(A1=26,"Z","超出范围"))

根据情况,可以将 C、D、E 这些从事辅助运算的单元格放在其它任何地方,或

一个单元格也可以实现!
=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",""))