ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

●●●关于《函数与公式》第一章中的一些纰漏或错误

[复制链接]

TA的精华主题

TA的得分主题

发表于 2008-10-29 16:23 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
原帖由 wjmm 于 2008-10-29 14:57 发表
在《函数精粹》技巧9-1 逻辑值与数值互换准则中说,False就是0,True是1或非0。


请注意引用话要全面,“正确”的话缺乏“语境”,断章取义之后就是可能错误的:
在Excel 中,逻辑值与数值的关系为:
(1)在四则运算中,TRUE=1,FALSE=0
(2)在逻辑判断中,0=FALSE,所有的非0 数值=TRUE
(3)在比较运算中,数值<文本<FALSE<TRUE

原帖由 wjmm 于 2008-10-29 16:07 发表
=IF(A1>10,)——这样的公式,返回值是FALSE或0。——难道您想说它们不一样吗?

您经常用FALSE(零)来指它们俩是一样的,事实上,仅靠转换准则就已经反驳了您的观点。
请输入=IF(0=FALSE,"相同","不相同")——看看0和FALSE到底是否一致。

原帖由 wjmm 于 2008-10-29 16:07 发表
难道你认为【=IF(A1>60,,"不及格")】这个公式没有意义吗?

我从来没说过这样的话,我都可以写=IF(A1>10,)这样的式子,不知道您怎样推断出这样的话来。

[ 本帖最后由 gouweicao78 于 2008-10-29 16:25 编辑 ]

TA的精华主题

TA的得分主题

发表于 2008-10-29 16:38 | 显示全部楼层
请先不用急于一时的争辩,理清思路最关键:
微软的IF第3参数提示“如果忽略,则返回FALSE。”——我们可以认同他说的是类似=IF(A1>0,TRUE)这样“连同第3参数前的逗号都去掉”的式子,而不可能理解为=IF(A1>0,TRUE,)。
相同的语境下,第2参数提示“如果忽略……”——是不是就可以理解为=IF(A1>0)而不是=IF(A1>0,),基于这样的理解,而又基于输入后Excel提示出错,那么是不是该告诉大家这里的“如果忽略”是错误的,是不可以忽略的。

当然,您仍可以认为“忽略”是保留逗号的情况,比如=IF(A1>0,,FALSE),或者=IF(A1>60,,"参数3")等等
那么反过来,同样的语境来对待第3参数的“忽略”是否就变成了=IF(A1>0,TURE,)——那么是否又要提醒读者:微软提示的第3参数“如果忽略,则返回FALSE。”是错误的,它应该返回0。

如果不是,那么该让读者怎样去判断“如果忽略”到底是保留还是不保留逗号的忽略?

[ 本帖最后由 gouweicao78 于 2008-10-29 16:39 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-10-29 16:47 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
那为什么附公式:
=IF((IF(59<60,,"BBB")=IF(59<60,FALSE,"BBB")),"参数2","参数3")的返回值是“参数2”?

if(0=flase,"参数2","参数3"),按51楼说法应该返回“参数3”才对。

原帖由 gouweicao78 于 2008-10-29 16:23 发表


请注意引用话要全面,“正确”的话缺乏“语境”,断章取义之后就是可能错误的:
在Excel 中,逻辑值与数值的关系为:
(1)在四则运算中,TRUE=1,FALSE=0
(2)在逻辑判断中,0=FALSE,所有的非0 数值=TRUE
...

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2008-10-29 17:05 | 显示全部楼层
恭喜您,终于找到一个真正的疑点了。
这个问题我没有发现过,从我所知道的情况看,您是第一个发现者。
=IF(59<60,,"")——单独运算的结果是0;
=IF(59<60,,"")=FALSE——比较运算的结果却是FALSE。

[ 本帖最后由 gouweicao78 于 2008-10-29 17:07 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-10-29 17:16 | 显示全部楼层
我相信你会是第一个找到该答案的人
原帖由 gouweicao78 于 2008-10-29 17:05 发表
恭喜您,终于找到一个真正的疑点了。
这个问题我没有发现过,从我所知道的情况看,您是第一个发现者。
=IF(59

TA的精华主题

TA的得分主题

发表于 2008-10-29 17:24 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
此刻,我只有庆幸 《精粹》这么描述简写 :
“部分函数中的参数可以使用逗号占据参数位的置代替逻辑值FALSE、数值0 或者空文本的简写方式”
呵呵,没把话说死一定是代表0,当然,除了FALSE、0、空文本""之外,chrisfang版主还找到了简写时所代表的其他默认值。“可以使用……来代替……”没有说不可以代替别的东西,看来,可以像微软的“忽略”一样达到忽悠的效果了

[ 本帖最后由 gouweicao78 于 2008-10-29 17:28 编辑 ]

TA的精华主题

TA的得分主题

发表于 2008-10-30 08:41 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
原帖由 wjmm 于 2008-10-29 17:16 发表
我相信你会是第一个找到该答案的人

其实,这个疑点是指我在49楼的回复表述不全,并无所谓什么答案。
在Excel中,如果A1单元格什么也没有输入,在B1输入=A1=0,返回TRUE;在B2输入=A1="",也返回TRUE。但是,不能以此来说明0="",这个特性在《精粹》中技巧6  正确区分空文本与空单元格  已详细阐述了其区别。

同理,输入=IF(1,)=0返回TRUE,输入=IF(1,)=FALSE也同样返回TRUE,但不能以此说明0=FALSE。技巧9-1说的是一个转换准则,是在不同情况下的对应值,这种对应是需要讲“前提”的。

而这个疑点也只能说明IF函数第2参数或者第3参数简写时,作为单独的公式返回0,而当与FALSE比较时,也可视为返回0或者FALSE。

TA的精华主题

TA的得分主题

发表于 2008-11-2 21:04 | 显示全部楼层
IF函数第2参数或者第3参数简写时,作为单独的公式返回0,而当与FALSE比较时,并不是返回0或者FALSE,而是什么都不返回,也就等同于一个空单元格。这跟=""返回的结果是不一样的!
从计算过程中可以看到 IF(59<60, ,"BBB") 什么都没返回,当然也相当于返回FALSE。

TA的精华主题

TA的得分主题

发表于 2008-11-2 22:04 | 显示全部楼层
很久没见半榻茶烟老兄了。
我前面提到的“A1真空,则=A1=0、=A1=""均可返回TRUE,但绝不能因此说0=""。”意在表明Excel对于一个相同的公式,返回的值可能存在差异。
从fx查看计算过程功能来看,虽然多数情况可以帮助大家理解函数公式的“秘密”,但并不全面,而且这个功能应该是有Bug的,好些朋友都遇到因这个功能而重启Excel的情况。个人意见,仅供参考。

TA的精华主题

TA的得分主题

发表于 2008-11-7 16:53 | 显示全部楼层
工作忙,难得来看看。头像是你儿子?看上去挺机灵的!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-25 07:07 , Processed in 0.041712 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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