楼主 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 |