| 楼主 gouweicao78 | 逻辑判断可以算是函数与公式的基本功了,但是不同的人写出来的公式,却也差别甚大,有冗长繁杂的“累赘”,有中规中矩的“易懂”,有天马行空的“精妙”。下面举些例子 1、冗长繁杂型: (1)多余的判断,比如:ISNUMBER、ISERROR、ISNA等信息函数本身返回的就是逻辑值,一些习惯编程的人,经常会写出 
 (2)多余的嵌套,比如:“如果A1小于10,返回1,如果A1大于等于10且小于20,返回2,如果A1大于等于20,返回3。”很多初学者见到“且”就想到AND,没有分析嵌套函数本身包含的逻辑关系,用 
 
 | 
| 2楼 gouweicao78 | 学习函数要干什么?记得有人在说“有必要钻那么深么”的时候,Apolloh曾回帖说“学习要分目的的”。对,目的决定应该选择的方法。 相信多数人学习Excel是要“用”而不是要“炫”的。如果自己写一个公式,自己都看不懂,那又怎么“用好”它呢? Excel的函数与公式,是很接近“自然语言”的,因此,写好一个公式,实际上相当于“说好一句话”。 【举例】 那么写出的公式就是: 
 
 利用逻辑值与数值关系的互换技巧 【前提】既然是A1/B1的计算,当然不会想在A1输入“中国”、B1输入“日本”这样的数据,而是输入数值。 【技巧】既然是数值,在逻辑判断中,就可以利用逻辑值与数值的转换关系(参考:逻辑值和数值及文本之间有什么样的关系 【解题】 1、=IF(B1,A1/B1,"")——利用B1是数值,当B1是空单元格或0时,0等价于FALSE。 2、=IF(A1*B1,A1/B1,"")——这哪儿跟哪儿啊,要除的怎么冒了个乘的?解释1:如果A1或B1中有一个0,A1*B1都会等于0而被视为FALSE;解释2:还是数值与逻辑值的关系,把A1看成一个条件,逻辑判断中那么A1<>0可以直接用A1代替,也就是AND(A1<>0,B1<>0)可以直接用AND(A1,B1);或者看成单值计算中的条件相乘(A1<>0)*(B1<>0) 对于解释1、解释2,很明显解释1我们容易理解,解释2似乎枯燥了些,没关系,它实际上是一个可以拓展的思路,包括数组公式中的条件相乘,不正是我们汉语理解里面“条件1成立且条件2成立且……条件n成立”吗。 | 
| 3楼 gouweicao78 | 前一讲的例子是逻辑值与数值关系的互换带来的思路,效果明显,思路跳跃一下公式短了很多(嘻嘻,喜欢炫的可以派上用场了,炫一炫,脑袋转一转,脑保健操开始……) 这一讲,想说的是逻辑位置的变换: 【举例1】还是公式=IF(B1<>0,A1/B1,""),我们看看变身:=IF(B1=0,"",A1/B1)省略了1个字符,呵呵。 【举例2】公式=IF(A1>=20,3,IF(A2>=10,2,1)),变身:=IF(A1<10,1,IF(A2<20,2,3))省略了2个字符,呵呵。 【举例3】学了数组公式的朋友都很经常看到类似=SMALL(IF(A$1:A$100="张三",ROW($1:$100),65536),ROW(1:1))的公式,有时候在复杂的数组公式中,往往要用到ROW(INDIRECT())等多层嵌套,使用Excel2003的朋友,总在担心7层嵌套限制问题。首先我们分析一下这个公式,意思是满足条件是返回对应行号、否则返回一个大的数字(常用65536来返回那一行的空白单元格,实际上多数人表格根本用不到1万行),那么只要返回的“大数”在范围内,也无所谓65536,主要问题是要ROW($1:$100)怎么弄出来。 变身1: 
 
 | 
| 4楼 林卡 | 好帖子!学习了!,谢谢草版 | 
| 5楼 apolloh | 呵呵,越看越好,越看越爱看!   | 
| 6楼 apolloh | 其实*代替IF,并不是很好。因为IF有个优势,它只计算条件表达式返回true或false所对应的第二或第三个参数的其中一个表达式,而不会两个都计算。 例如=IF(A1>100,A1+B1,0) 和 (A1>100)*(A1+B1),得到的结果相同,但前者在A1<=100的情况下是直接返回0的,而不用计算A1+B1这个表达式,后者则任何情况下都必须计算A1+B1。如果将A1+B1替换为一个复杂运算,那么效率差异就会很明显了。 | 
| 7楼 红牡丹 |  好帖子!收藏了~~。越学越不懂E. | 
| 8楼 livewire | 跟着草版越学越爱上了函数与公式。 | 
| 9楼 jackeroo | 我要跟草草学习,收我吧。 | 
| 10楼 yanghan52717 | 非常感谢! | 
| 11楼 无心为爱 | 同意,精彩!~ | 
| 12楼 水星钓鱼 | 时间多出来了,慢慢品味佳文来了。 | 
| 13楼 goldowl | Thanks a lot. | 
| 14楼 曾杰2号 | 谢谢楼主详细讲解啊 | 
| 15楼 帛易 | 真是个好帖子,我很是喜欢 | 
| 16楼 DavidD | 厉害! 函数说到这份上,不爱看 看不懂 都成为不可能! | 
| 17楼 yncxxmj | 好帖子,认真学习,提高技能。 | 
| 18楼 tongliaozyr | 呵呵,越看越好,越看越爱看 | 
| 19楼 yuezc | 感谢两位版主的讲解。 | 
| 20楼 yuezc | 感谢两位版主的讲解。 | 
| 21楼 ahui21 | 不错,收藏慢慢体会。 | 
| 22楼 孟飞 | 好帖子!收藏了~~。越学越有味. | 
| 23楼 cooldiy | 妙妙妙,,78544317 这个是学习EXCEL 的群 | 
| 24楼 yzcyzc1023 | 非常感谢,收藏。 | 
| 25楼 杨哨南 | 非常感谢,收藏 | 
| 26楼 lrlxxqxa | 草版讲解的真好,收藏了! | 
| 27楼 赵文竹 | 呵呵,虽然我等菜鸟还不到精减公式的境界,但看到草版的精彩讲解,还是受益匪浅,谢谢!学习了…… | 
| 28楼 rzz8118 | 受益匪浅,谢谢共享 | 
| 29楼 donghan | 学习草版的帖子,潜移默化 | 
| 30楼 lyglee | gooericao 依稀滴尼不洗! | 
| 31楼 lrlxxqxa | 真不愧为精华帖! | 
| 32楼 liguangtj | 很有用啊,有时间一定静下心来学习! | 
| 33楼 mjgdxx | 学习啦 | 
| 34楼 mjgdxx | 学习啦 | 
| 35楼 悟空师弟 | 好贴,收藏了! | 
| 36楼 lgh978 | 感谢两位版主的讲解。 | 
| 37楼 wangqilong1980 | oooO ↘┏━┓ ↙ Oooo ( 踩)→┃踩┃ ←(踩 ) \ ( → ┃√┃ ← ) / \_ )↗┗━┛↖(_ / | 
| 38楼 wangqilong1980 | 非常好用,谢谢版主。 | 
| 39楼 江河源 | 正学习中,好贴 | 
| 40楼 china_yilong | 一天学一点 | 
| 41楼 domydo | 学习了,平常用的函数就不精炼,以后尝试楼主的方法 | 
| 42楼 a216516 | 感谢分享,IF函数我就是太多花哨了,看了草草写的,真是一语中地呀 | 
| 43楼 空气 |   | 
| 44楼 liuguansky |  好贴 。真是好贴 。 | 
| 45楼 laowuwyx | 细微之处见功力,向草版学习! | 
| 46楼 天生我才2481 | 谢谢版主的精辟讲解,学习了! | 
| 47楼 海盗老大 | 好帖,学习了! | 
| 48楼 snowangle007 | 感谢狗尾草的杰作!学习了!   | 
| 49楼 szchen001 |  新手崇拜中 | 
| 50楼 rabbitllu | 也算我一个吧,我也要跟草草学习,太棒了。 | 
| 51楼 军港之夜 | 对自己在写公式时候调理好自己思路很有帮助,谢谢。 | 
| 52楼 开心妙妙 | 精妙的逻辑判断,学习 | 
| 53楼 双飞叶 | 不错的学习帖子, | 
| 54楼 kmbobo | 真是好帖子!说得相当透彻! | 
| 55楼 bishunbiao | 感受函数魅力,理解其精髓 | 
| 56楼 穿高跟鞋在跑步 | EXECL很强大……文科生表示鸭梨很大…… | 
| 57楼 资深乞丐 | 不错!学习…… | 
| 58楼 神奇网格 | 讲的真好值得收藏 | 
| 59楼 痒痒挠儿 | 学习了,膜拜中 | 
| 60楼 云龙 | 非常感谢,学习的同时也要怀着感恩的心,呵呵 | 
| 61楼 32828225 | 请制作教程给下载,谢谢楼主的分享! | 
| 62楼 wumin88838 | 不错,收益很多,学习了 | 
| 63楼 will2013 | thanks a lot | 
| 64楼 maycomrise | '=IF(ISNUMBER(……)=TRUE,……'您说=TRUE没有必要,我不明白:‘ISNUMBER’返回是逻辑值,它就有=TRUE,或者=FALSE的不同可能,外层的IF函数是针对ISNUMBER返回的不同值有不同的取舍,所以就要确认它返回的到底是TRUE,还是FALSE;如果舍去这个确认,IF的取舍怎么实现呢? 请指教,谢谢! | 
| 65楼 gouweicao78 | 本身If就是要根据第一参数是True 还是False来决定返回第二还是第三参数: IF(True,1) IF(TRUE=TRUE,1)还要计算一下第一参数等式得到true(表示True=True成立),所以是多余的 | 
| 66楼 gouweicao78 | 本身If就是要根据第一参数是True 还是False来决定返回第二还是第三参数: IF(True,1) IF(TRUE=TRUE,1)还要计算一下第一参数等式得到true(表示True=True成立),所以是多余的 | 
| 67楼 maycomrise | 知道了,谢谢!  我还以为必须要判断一下才行,其实IF本身是可以直接看第一参数是true还是false,受教了! | 
| 68楼 kaka1688 | 有用,谢谢 | 
| 69楼 kaka1688 | 很好的贴 | 
| 70楼 hustclm | 确实是,其实这跟一个人平时的思维习惯有很大的关系 | 
| 71楼 ifljh | 一定要好好学习函数。 | 
| 72楼 youzhaodi | 普及贴啊 | 
| 73楼 poiuyman5 | Logic is everything of universal | 
| 74楼 yirenxiangtao |   | 
| 75楼 buwenhl | 好好学习一下 | 
| 76楼 382224811 |   | 
| 77楼 731w | 明白了很多。 | 
| 78楼 友宝贝 | 好 好 | 
| 79楼 poiuyman5 | good | 
| 80楼 poiuyman5 | good | 
| 81楼 yirenxiangtao | 支持gouweicao78 | 
| 82楼 老百姓 | 支持支持 | 
| 83楼 wumin88838 | 很多文章可以看看 | 
| 84楼 老百姓 | A2>90 |