ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > 我的酷贴 > 函数与公式 > 数组公式中逻辑函数的非逻辑行为

数组公式中逻辑函数的非逻辑行为

作者:绿色风 分类: 时间:2022-08-18 浏览:107
楼主
donghan
 
上面的数据区域已经定义为DATA
如果我们想求名称DATA中“>0"且"<6"的数值的和,2007中我们可以用新函数SUNIFS组成非数组公式:
=SUMIFS(DATA,DATA,">0",DATA,"<5")
或者用与以前版本兼容的数组公式:
{=SUM((DATA>0)*(DATA<5)*DATA)}
但是如果想用AND函数连接两个条件却不能计算出正确结果,如数组公式:
{=SUM(IF(AND(DATA>0,DATA<5),DATA))}
以上公式符合AND函数的书写逻辑,但是返回的结果是错误的。
为什么呢?因为按我们的预想,AND函数应该返回的结果是:
{TURE,TURE,FALSE;TURE,FALSE,FALSE;FALSE,TURE,TURE}
而实际上AND又对上述结果进行了计算,得到最后唯一的结果FALSE,从而使最终结果为0.
同理OR函数也有这样的函数特性,即无论是什么样的参数,其最终结果只能返回1个值,而不能返回数组结果,在这里我称之为结果”唯一函数“。
像SUM、MAX、MIN等很多函数都是这样的函数,如果想返回数组结果,这些唯一函数是不可用的,否则就会得出错误结果。

再举例如:定义{1010,2060,3033;1003,2100,3015;1050,2005,3001;1020,2040,3020;1015,2000,3007}数组为DATA2,求DATA2中每列的最大值之和。
用数组公式{=SUM(--RIGHT(SMALL(COLUMN(A:C)*1000+DATA2,ROW(1:3)*5),3))}可得出结果为183,
但是如果用SUM联合MAX是得不出正确结果的。
数组公式中逻辑函数的非逻辑行为.rar
2楼
gouweicao78
讲解基本点到要害,不过有些问题表述不妥。
参考:公式中的*号、+号是“且”、“或”的意思吗 http://www.exceltip.net/thread-281-1-1.html


修改意见如下:
1、“唯一函数”之名恐不妥,容易联想为“唯一值”、“不重复值”

2、此处AND函数仍然是逻辑函数,执行的仍然是正确的“逻辑行为”,楼主所言的,是数组公式中需要返回单值、数组的区别,而不是AND是否存在“非逻辑行为”。

3、公式:=SUM(--RIGHT(SMALL(COLUMN(A:C)*1000+DATA2,ROW(1:3)*5),3))存在笔误:
举例的DATA2是4位数,为何仅*1000和取右边3位数?

4、“如果用SUM联合MAX是得不出正确结果的”,这句话应该有个错误的例子作为参照,否则是很不严谨的,比如使用下面公式可以得到正确结果:

  1. =SUM(MAX(INDEX(DATA2,,1)),MAX(INDEX(DATA2,,2)),MAX(INDEX(DATA2,,3)))

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap