ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[分享] OFFSET数组化 撞出 array 级别的参数数组化

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2010-9-29 15:40 | 显示全部楼层
本帖已被收录到知识树中,索引项:OFFSET
究其原因是对黄版以 range().FormulaArray 以及 公式的输入方式(CTRL+SHIFT+ENTER)来判断公式是数组公式的做法“不敢苟同”。

本不想说什么,是看到你又错误的提到了我,所以还是说两句。range().FormulaArray 是你自己提出来的,这点你是搞错了。我说的是hasarray,hasarray属性是判断单元格是否存在数组公式。我举例的意思是如果在单元格中以三键的方式输入{=A1},那么hasarray是true,表示存在数组公式。另外,你在多个单元格中以多单元格数组公式的方式输入{=A1},想要删除或编辑其中一个单元格时,Excel也是提示数组公式不能单独删除。{=A1}不存在任何数组运算。所以数组公式<>数组运算。原帖中已经完整阐述了,还不理解请看我的博客
[原创] 何谓数组公式?其与数组运算有何区别?


回复网友提问:

http://club.excelhome.net/dispbb ... &replyID=339489

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

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

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

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

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

这些理论已经多次写进了EH的书中,你可以去看看。

点评

fdd
留个记号!  发表于 2011-8-25 17:58

TA的精华主题

TA的得分主题

发表于 2010-9-29 15:54 | 显示全部楼层
"陈军长老"压不住呀  .....呼叫开国功臣 Kevin

TA的精华主题

TA的得分主题

发表于 2010-9-29 16:04 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
原帖由 terqm 于 2010-9-29 15:54 发表
"陈军长老"压不住呀  .....呼叫开国功臣 Kevin


好象華山論劍啊,眾高手誰也不服誰。

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-9-29 16:18 | 显示全部楼层
陈版,对不起。让你失望了。

TA的精华主题

TA的得分主题

发表于 2010-9-29 23:13 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
微软定义的标准三维引用是类似
=SUM(Sheet1:Sheet3!A9:C12)
这样的公式中Sheet1:Sheet3!A9:C12所指的引用,而且VBA中并没有对应的对象定义。
都是INDIRECT和OFFSET惹的祸,没有这两个函数,所有的函数均停留在最多二维阶段;
有了INDIRECT和OFFSET这两个函数由数组参数产生的引用,微软没有定义,我们EH已定义为Z-Order引用、由数组参数产生的三维引用、多维引用等,但并不是最终的定义。
所以,对这方面的新解释和分析,我们都要提倡,不要加以限制。

各位心平气和些。

TA的精华主题

TA的得分主题

发表于 2010-9-30 10:20 | 显示全部楼层
“多维引用”的概念,源于chenjun版主最早提出的“三维引用”,后来我们又发现了在二维数组参数或两个不同方向的一维数组参数相互作用下,还能产生4个维度的引用,所以偶在那篇“浅谈引用函数产生的多维应用工作原理及其应用”中将其升级为“多维引用”,并用大量实例辅助说明。同时还对微软原本定义的跨多张工作表的“三维引用”与这种在引用函数中使用数组作为参数产生的多维引用进行了区分,前者实际上不是引用,可以用ISREF函数验证,而后者才是名副其实的引用,所以我们用”多维引用”的概念是完全站得住脚的。文章地址请见:http://club.excelhome.net/thread-98081-1-1.html
正是因为感觉到这方面的内容还很有挖掘的潜力,所以偶用了“浅谈”二字,但并不意味着这部分内容适合初学者学习,实际上没有较好的函数与数组的应用基础,是很难正确理解的。从几次交流中,偶应该可以肯定胡版并不理解其中的内容,甚至对“数组公式”和“数组运算”,以及微软帮助中的“多重计算(多项运算2007)”的认识也是模糊的。当然,认识模糊是很正常的,EH所有版主包括偶本人(曾经是版主)也都经历了一个逐步认识的过程。

偶一向以来都是主张创新,从不压制新思想,也没有这个权利。偶与EH原来的几个版主创办的新论坛exceltip,也是鼓励原创的。但偶更主张先学习后创新,先理解现有的概念,在此基础上提出自己的不同见解,这样才易于沟通。如果玩一套自己看似很美的东西,完全不顾现有知识的承接,这不符合事物的发展规律,也很容易误入歧途,甚至误导新人。即便你要批判原有的东西,也要认研究它,有针对性的提出新的看法,这样才有利于辨析。相信胡剑在2007精粹的写作中应该有所体会,想想自己写的文字最终被采纳的比例是多少,这点能不能领悟看自己的造化。

和EH多数版主一样,在写那篇浅谈或是其他原创文章之前,偶认真阅读并研究过当时论坛所有内容相关的的重要帖子,确认是创新的内容才发表的。偶个人希望这个“革命传统”,在我们所有的Excel爱好者中,包括Excelhome、Excelpx、Exceltip、Officefans等论坛上的会员,能够很好的继承和发扬。谢谢!

[ 本帖最后由 apolloh 于 2010-9-30 10:55 编辑 ]

TA的精华主题

TA的得分主题

发表于 2010-9-30 11:07 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
offset还没有用到,感觉有点深奥,需要慢慢消化才行。

TA的精华主题

TA的得分主题

发表于 2010-9-30 11:24 | 显示全部楼层
“多重计算”是Excel中文版的翻译,英文原版内容为“An array formula can perform multiple calculations and then return either a single result or multiple results.”。
在2007版本的帮助中翻译成为“多项计算”,我们认为现在这种翻译更为贴切。为了治学的严谨,也为了读者能够真正理解这个微软官方的定义,草版和我在《2007精粹》的写作过程中也对这个定义的用词方法反复进行了推敲,最终在新书中以“多项计算”来替代原有的“多重计算”称谓。

下面有当时的QQ聊天记录:
******************************************
2009-8-5 10:33:42 chrisfang
技巧23
  
2009-8-5 10:33:51 chrisfang
多重计算和数组公式定义
  
2009-8-5 10:34:35 chrisfang
[
图片]
  
2009-8-5 10:34:53 chrisfang
帮助里面是称为“多项计算
  
2009-8-5 10:35:13 gouweicao78
我们并不全跟帮助文件一致
2009-8-5 10:35:24 chrisfang
我觉得它的更贴切
  
2009-8-5 10:35:33 chrisfang
多重计算意思不太一样
  
2009-8-5 10:35:46 gouweicao78
多重计算是以前在“何谓数组公式”帖中的称号
2009-8-5 10:36:19 chrisfang
应该是把数组里面的多个元素同时进行计算,也就是所谓多项同时计算。多重的话感觉是计算的次数和层次
  
2009-8-5 10:36:38 gouweicao78
03
版是“多重”
2009-8-5 10:36:56 gouweicao78
那我们也改吧
2009-8-5 10:36:58 chrisfang
翻译问题,我觉得现在07里面的表述更贴切
  
2009-8-5 10:37:11 chrisfang
它后面的定义也不错
  
2009-8-5 10:37:31 chrisfang
数组公式对“两组或多组作为数组参数的值执行运算
  
2009-8-5 10:38:07 chrisfang
应该有两组吧才能多项运算吧?
  
2009-8-5 10:38:27 gouweicao78
那就改变了以前以按三键为标志的说法。
2009-8-5 10:38:40 chrisfang
三键标志没有错
  
2009-8-5 10:39:10 chrisfang
三键标志所进行的结果就是将数组元素进行了多项运算
  
2009-8-5 10:39:29 gouweicao78
那么{=A1}呢
2009-8-5 10:39:39 chrisfang
当然,和你写的一样,并不是所有进行这种运算的都是数组公式
******************************************
我认为做学问首先第一条就是要严谨,草版就是一个十分严谨的人,可以为了一两个字反复推敲论证和斟酌。论坛中的很多前辈也一样有着严谨的治学精神,包括陈军版主、李版、黄版等等。做学问同时也是寂寞的,聚光灯下捧不出学术明星。
只要能以谦虚谨慎和严谨的态度来研究问题,以技术讨论技术,任何创新和开拓都是可以接受的。



TA的精华主题

TA的得分主题

发表于 2010-9-30 11:36 | 显示全部楼层
有些朋友平时可能会对几大Office论坛有些比较,说EP比较活泼生动,而EH比较沉重。其实这种“沉重”的部分原因就是EH的浓厚学术气氛造就的,也正是这种学术氛围造就了许多大师级人物,也塑造了EH在Excel领域的学术权威性。我们论坛能够在这种学术氛围的持续浸淫下进行严谨的学术研究、开展良性的学术竞争,这种状态以前一直就保持的很好,以后也应该继续保持下去。

TA的精华主题

TA的得分主题

发表于 2010-9-30 12:06 | 显示全部楼层
呃~把怪物级别的人都引来了.......弱弱地问一句,你们在讨论   米高佐敦   和   詹姆斯·乔丹,    谁厉害么??
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-26 22:02 , Processed in 0.036570 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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