ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

该公式不按三键算不算数组公式?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2006-3-27 01:39 | 显示全部楼层 |阅读模式
该公式不按三键算不算数组公式?

该公式不按三键算不算数组公式?

该公式不按三键算不算数组公式?

TA的精华主题

TA的得分主题

发表于 2006-3-27 01:59 | 显示全部楼层

我认为不算,数组公式用三键结束,不用三键的都不是数组公式。

论坛上也有不同意见,认为sumproduct()等对数组进行计算的公式就是数组公式,如此说来

=SUM(COUNTIF(A1:A10,{">30","<20"})) 是数组公式

=SUM(OFFSET(A1,1,,6)) 同样是数组公式

=MATCH(5,A6:H6) 照样是数组公式

什么是普通公式?恐怕只有=A1+B1了。

片面之词。

最后,我认为,其实也无关紧要,是又怎样,不是又怎样?

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-3-27 02:05 | 显示全部楼层
我只是想求证(更准确的表达)该公式是不是数组公式,因为我正在写一个东西,写错了那么“科学性”、“准确性”就没有了。所以把该问题放到论坛上,征求高手的意见,才能更加放心写东西。谢谢你的帮助!

TA的精华主题

TA的得分主题

发表于 2006-3-27 02:47 | 显示全部楼层

佩服!深夜继续发帖回帖的人!!!我家的电脑被我ghost成一个盘了,所以正在用软件恢复,想找回照片,所以先睡了一会儿再起来的。

关于数组公式,刚好也想写点东西,个人以为:

1、广义数组公式——只要运算结果是由数组运算得到的就是数组公式,包括sumproduct,包括1楼的{}常量数组。

而某些公式比如简单的=or(A1:B1=1)这个判断,如果按三键——必然是数组无疑,因为其结果是以A1:B1这么一个多单元格区域数组运算产生的。如果不按三键,则只受到A1单元格的影响——即只运算了数组区域的第一个元素,所以不算数组公式(或者直接说是个错误的公式)。

2、狭义数组公式——就是我们日常说的按三键结束才算。

日常所说“数组公式”即狭义数组公式,是被大多数人接受的一个概念,也是有助于引起大家注意要(按三键)区分普通公式的一个概念。

最后,我同意山菊花的“最后”的说法——的确,假如你跟大家解释广义的数组,都去一个个的分辨就要费神得多,而且不利于入门和提高,毕竟,“记住按三键以免出错”比去争论是否数组公式之名来得实在得多。

而且很多广义数组的形式甚至有点“似非而是”的情况,比如用来跨表查询时,这个公式中:(http://club.excelhome.net/dispbbs.asp?boardid=3&replyid=308744&id=152918&page=1&skin=0&Star=2 第14楼)

=VLOOKUP(A1,INDIRECT(LOOKUP(2,1/(COUNTIF(INDIRECT(ROW($2:$5)&"!A:A"),A1)=1),ROW($2:$5))&"!A:B"),2,)

就是利用lookup本身第二参数支持数组运算的特性。当时我也是惊讶了一阵子的,呵呵。其实没必要在这个概念上执著吧,我想。

http://club.excelhome.net/dispbbs.asp?boardid=3&replyid=525093&id=96805&page=1&skin=0&Star=9 一直没细看这个帖子,回头得再看看,说不定我这大半夜的回复成了错误的“梦话”了。
[此贴子已经被作者于2006-3-27 3:15:12编辑过]

TA的精华主题

TA的得分主题

发表于 2006-3-27 08:57 | 显示全部楼层

简而言之,以三键结束的就是“数组公式”,不以三键结束的就不是,不论其是否执行了“数组运算”。“数组公式”的概念只涉及公式的表达形式,而不是公式内部的运算模式,不应该将其同“数组运算”混淆了。“数组公式”只是用来显式通知Excel,某公式被用户要求执行数组的计算方式的表达形式。

数组的计算方式,可以称之为“数组运算”。其分为两种,一种是函数内部参数间的对应计算,另一种是公式结果同其所在单元格区域的对应计算。

不是所有的数组运算都需要以数组公式的形式来通知Excel,有些函数内部的运算执行的就是数组运算,如sumproduct,lookup等。如果使用该函数的公式最终计算结果返回单值,且该公式没有嵌套其它需要显式通知Excel执行数组运算的公式,这种情况下,就没有必要使用数组公式的形式。

当然,也不是所有的数组公式都需要执行数组的内部运算。例如,在一个单元格区域B1:C10中输入{=A1},其计算过程执行的不是数组内部运算,但其的多值结果与单元格区域一一对应。对于这样的应用,我们也需要显式的通知Excel,以数组公式的计算方式来运算。

另外,对于一个不需要显式通知Excel执行数组运算的公式,如果也以三键结束,对Excel而言,它一样是用来显式通知执行数组运算的数组公式。只是,在实际计算过程中,这一通知是多余的。

[此贴子已经被作者于2006-4-2 12:30:06编辑过]

TA的精华主题

TA的得分主题

发表于 2006-3-27 09:14 | 显示全部楼层
嗯,昨夜我从那个帖子1楼看到完,发现自己不知道的东西还很多——我还是混淆了这两个概念,果然半夜说“梦话”了,哈哈。

TA的精华主题

TA的得分主题

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

5楼apolloh版主总结得非常清楚,学习了!

关键词-数组公式(显式通知)

数组运算(函数内部参数间的对应计算,结果同公式所在单元格区域的对应计算)

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-3-27 10:44 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
非常感谢各位朋友的解释。昨晚睡得晚了,起来的也晚了。现在才看到apolloh版主的精彩总结。

TA的精华主题

TA的得分主题

发表于 2006-7-11 15:13 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
非常精彩的講解

TA的精华主题

TA的得分主题

发表于 2006-7-11 15:53 | 显示全部楼层
5楼的版主总结得很精彩,数组公式与数组运算。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-28 04:45 , Processed in 0.044611 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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