ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

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

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-10-24 13:08 | 显示全部楼层

不过这是句“完全正确废话”,但既然是废话,为什么还特意放在“注意”里?

还有,IF函数向导里并无错误或会引起歧义的地方。请指出

以下是引用gouweicao78在2008-10-24 12:54:00的发言:

QUOTE:

呵呵。

我们本来有一致的说法:即您也认为这是一句“完全正确”的话。

只是您认为没必要,因为不可能出现=函数名(第1参数,第3参数)的形式;而我的目的在于更正Excel函数参数向导对话框中的错误。

另,从您短信看,我再次说一下3楼的省略和简写两个概念,比都用“省略”、“忽略”来得细致:

参数省略——连逗号都没写,比如=IF(A1>60,"及格"),第3参数是“省略”了。

参数简写——保留逗号,比如=IF(A1<60,,"不及格"),第2参数是“简写”了。

在书中技巧14 函数参数的省略与简写 中的描述为:“部分函数中的参数可以使用逗号占据参数位的置代替逻辑值FALSE、数值0 或者空文本的简写方式


[此贴子已经被作者于2008-10-24 13:14:58编辑过]

TA的精华主题

TA的得分主题

发表于 2008-10-24 13:16 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
QUOTE:
以下是引用wjmm在2008-10-24 13:08:00的发言:

不过这是句“完全正确废话”,但既然是废话,为什么还特意放在“注意”里?

晕了,呵呵。我只认同了这是“完全正确”的一句话。

我已阐明其“必要性”:尤其是对函数参数向导中的错误进行更正,难道这不需要引起注意,而让大家继续用错误的帮助信息吗?

难道您还认为这样的提示是“废话”吗?

[此贴子已经被作者于2008-10-24 13:19:19编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-10-24 13:19 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

确实有点晕,看来得去睡午觉了。

不过,你所指“错误的帮助信息”在哪?

QUOTE:
以下是引用gouweicao78在2008-10-24 13:16:00的发言:

晕了,呵呵。

您认为是“废话”,并不是我们都认为是“废话”。

我已阐明其“必要性”:尤其是对函数参数向导中的错误进行更正,难道这不需要引起注意,而让大家继续用错误的帮助信息吗?

TA的精华主题

TA的得分主题

发表于 2008-10-24 13:21 | 显示全部楼层

错误的信息在第6楼的链接的帖子里、在第15楼我贴上的图片里,用红线标注出来的。

TA的精华主题

TA的得分主题

发表于 2008-10-24 17:30 | 显示全部楼层

我也谈一下我的看法。

首先,我觉得微软的帮助中对“省略”的含义有所混淆。它把包含逗号和不包含逗号的简写,都笼统地称之为“省略”,而实际使用当中到底是否可以不加逗号,实在是需要用户自己去把握。

首先看一下IF函数的帮助:

其中提到了“忽略”第三参数,并且特别提到了不使用逗号(见括号中的文字)。特意去查看了英文版原文,此处的“忽略”一词原文为“omitted”与帮助中其他提到“省略”的地方所用词汇一样,因此可以肯定这里的“忽略”就是“省略”的意思。

因此我们看到了第一种情况:微软提到“省略”参数时,附带强调了不带逗号。

再看一下Match函数的帮助:

熟悉match函数的应该知道,这里所谓的“省略”是指不包含逗号的省略方式,否则“省略”效果不会等同于最后一个参数等于1而是会等于0。

这是第二种情况:微软提到了“省略”参数,但是没有强调是否带逗号,从实际使用情况来看是不带逗号的。

 

再看一下ACCRINT函数的帮助,包括其他多个财务函数都有类似的特性:

 

Accrint的第5个参数和第7个参数可以省略,但第6个参数不可省略,所以实际使用中,省略这两个参数的有效的函数写法是:

=ACCRINT(参数1,参数2,参数3,参数4,,参数6,)

或=ACCRINT(参数1,参数2,参数3,参数4,,参数6)

其中,参数5可以省略,但因为参数6不可省略,所以参数5的位置必须保留,因此参数5之前的逗号要保留;而参数7的省略既可以保留逗号也可以不保留逗号。

因此我们看到了第三种情况:微软提到了“省略”参数,但这种省略是需要保留逗号的(参数5的情况),或者是保留或不保留逗号的效果相同(参数7的情况)。

因此,综合以上几种情况我们可以发现,其实微软帮助对省略的概念是模糊的,没有明确逗号是否需要保留,有些情况下逗号有无的效果相同,而另一些情况下有无逗号的效果却截然不同。

同时也还要声明一点,并非所以省略具体参数而保留逗号的情况都默认为零,例如上面的Accrint第5参数省略的情况下默认为1000。

作为我们的书籍来说,为了比帮助内容更清晰地表明函数参数的使用情况,统一约定以不含逗号的省略参数写法称为“省略”,而将保留逗号的省略参数写法称为“简写”,这是一种可以接受的约定,也是一种更负责的做法。

 


 


[此贴子已经被作者于2008-10-24 17:33:40编辑过]

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

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

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

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

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

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

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

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

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-10-24 19:48 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
asdfasdfasdf

[ 本帖最后由 wjmm 于 2008-10-27 08:18 编辑 ]
BbSRnYNQ.gif

TA的精华主题

TA的得分主题

发表于 2008-10-24 23:07 | 显示全部楼层

首先,IF函数:

QUOTE:

第1参数Logical_test是一个条件;

第2参数Value_if_true    logical_test 为 TRUE 时返回的值。——也就是当条件为真时,返回第2参数的值;

第3参数Value_if_false    logical_test 为 FALSE 时返回的值。——也就是当条件为假时,返回第3参数的值。

请楼主看一下6楼链接中或15楼的那个图,图中画红线的那一句“Value_if_true    logical_test 为 TRUE 时返回的值。如果忽略,则返回TRUE。”请用您理解的微软“忽略”的方法来把它“忽略”试试看:

1、连逗号都忽略,那么成了=IF(第1参数)——这样的公式是无法输入的;

2、保留逗号的“忽略”,那么成了=IF(第1参数,)——这样如果第1参数为真时返回的第2参数是0,而不是TRUE。

只有=IF(第1参数,TRUE)才有可能在条件为真时返回的是TRUE。

也就是说无论您怎样理解,图片中微软的这句话都是错误的。您可以按本书提供的“省略”、“简写”重新理解一下,就不会出现这个问题了。

另,书中P46的那句话是“IF 函数的函数提示工具中的信息有误,其第2 个参数不可省略。”没说帮助文件有误。

其次,关于MATCH,本人只是举例说明=MATCH(A1,A1:A10,0)与=MATCH(A1,A1:A10,)是一样的。请参考《函数精粹》技巧14函数参数的省略与简写中的阐述。这样的简写不一定表示那个参数是0,也可能是False或空文本"",比如=SUBSTITUTE("我爱Excelhome","我",)与=SUBSTITUTE("我爱Excelhome","我","")是一样的。

至于MATCH的查找原理(您所提的返回#N/A!来证明查找不成功也是不全面的,在乱序情况下,不是返回#N/A错误的时候,不见得就是正确答案,而是按照其查找策略返回的)没有必要在这个帖子里深入讨论,您可以参考下面链接帖中的探讨:

Lookup的查找策略 onkey
http://club.excelhome.net/viewthread.php?tid=113915

[此贴子已经被作者于2008-10-24 23:28:16编辑过]

TA的精华主题

TA的得分主题

发表于 2008-10-24 23:20 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

谢谢方兄找出这么多函数来论证,呵呵。

楼主也不必自谦文化水平低,有这样的钻劲儿就足以令人佩服了,这一帖,肯定也能让其他读者受益。

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-10-27 08:44 | 显示全部楼层

回复 27楼 gouweicao78 的帖子

如何删除自己的帖子?   

[ 本帖最后由 wjmm 于 2008-10-27 08:56 编辑 ]
Snap3.gif

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-10-27 10:39 | 显示全部楼层

回复 29楼 wjmm 的帖子

我曾在一本书上看到过,“一般情况下,非0为True,0为False,但If函数刚好相反。”(大意如此)
而且在帮助中微软已经说的很清楚
Snap4.gif

另外,关于If函数的第二个参数不能省略的问题,我仍坚持《精粹之函数》是错误的。比如公式
=if(59>60,,"计算错误")是有返回值的,返回“计算错误”
至少应该这样说,“当第1个参数为真时,第2个参数不能省略”,而不能笼统的说“第2个参数不能省略”
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-25 23:58 , Processed in 0.042883 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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