ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

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

  [复制链接]

TA的精华主题

TA的得分主题

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

回复 79楼 laoshenji 的帖子

本帖已被收录到知识树中,索引项:OFFSET
2010.1
2010.10
工表名与单元格名不一致,导致公式出错

TA的精华主题

TA的得分主题

发表于 2010-9-28 14:47 | 显示全部楼层
支持胡版,话就不多说了!讲理论俺很晕菜,跟着感觉走就是了,觉得听胡版的课理解容易就支持胡版,觉得听黄版的课理解容易就支持黄版.

仅个人感觉 ,看了黄版的帖子和胡版的帖子.

TA的精华主题

TA的得分主题

发表于 2010-9-28 22:15 | 显示全部楼层
胡版、黄版、草版:
三位先消气,不能将技术讨论转变为相互攻击。

TA的精华主题

TA的得分主题

发表于 2010-9-28 22:28 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2010-9-28 23:37 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
绝对高手!!!

TA的精华主题

TA的得分主题

发表于 2010-9-29 09:40 | 显示全部楼层

回复 124楼 chenjun 的帖子

陈兄说的对。我一出场就说了,我只作技术方面的争论。我是因为胡兄提到我说“绝对交叉”,特此来更正的。此前胡兄发链接让我作点评,我就说一下吧:

我认为不管是什么样的帖子,为的是“有利于读者掌握”。因而,我认为应该有3个原则:

1、易于理解:
方版举例说的如果X=a+b,a、b已知,则绕一圈用未知的Y、Z来说反而增加理解的负担。
每个人在把抽象事物形象化方面,有贴近自己的念头,比如胡兄的脉冲、驱动,但这有些变成用另一种术语来描述原有概念。对于“分时特性”,我认为不妥,即便有些情况(如循环引用)计算单元格时存在一些先后顺序,但此帖中的内容,并不能用运算“时间”差异来证实。
对于“双平面结构”,可以接受,但不是很赞同。而胡兄的“颗粒”,是可以形象化或图像化的,我认为这个比喻倒是不错。事实上,即便是“多维引用”图像化之后,我们画出的垂直于Excel行、列平面的第3维的Z坐标,也是想象的,把单元格想象为颗粒也好,片状物也好,总归来说都是在想象的空间上进行排列分布,易于将肉眼不见的多维引用变成肉眼可见。“offset数组化”与“多维引用”说的是一个意思,取词上,我习惯用后者,因为后者是化用了Excel官方定义的“三维引用”。


2、不能混淆:
如果原本的概念已有一定难度,在形象化描述时,更不能让人产生混淆,比如“公式数组”一词,可能胡兄的意思应该是“多单元格数组公式”,把每一个公式看成一个元素,但与既有的“数组公式”概念就容易混淆。

3、可应用性:
不管理论如何精妙,应该要指导应用。胡兄的多个帖子,其实是在多单元格数组公式方面做的文章(只不过字面上变了很多),这种公式运算速度快,确实是一个很不错优势。但如果构建这种公式的难度上比较大,而数据量上又比较少,可以说是“性价比”不高的做法,因此,这个探究应该有所侧重,向易构建、大数据量需求方向。

此外,以前在学习函数时,看chenjun兄的帖子很多,确实有的一开始不一定容易理解,但一旦出现问题,大都需要返回到这些基本的原理上来加以解释,112楼chinjingo提问的OFFSET问题,在另一帖中已回复,用的就是基本原理。

[ 本帖最后由 gouweicao78 于 2010-9-29 09:55 编辑 ]

TA的精华主题

TA的得分主题

发表于 2010-9-29 09:59 | 显示全部楼层
原帖由 chenjun 于 2010-9-28 22:15 发表
胡版、黄版、草版:
三位先消气,不能将技术讨论转变为相互攻击。




其实我心里已经明白,此番情形多说无益了,只是这脾气还是不长进。谢谢老大,我还是和当年一样,还是需要你经常提醒。^_^

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-9-29 14:12 | 显示全部楼层
引用草版帖子内容

呵呵,我引用草版的内容的原因我在本帖107楼也说了,那天草版给我讲“绝对交集”时引用了帮助中的内容:
"对单元格区域而不是单个单元格的引用按照单个单元格进行计算。

而我心中一直想着 “按单元格来单独计算(分时计算)”,所以当时似乎只盯上了其中“ 按照单个单元格来计算”这几个字了。开始想用帮助中的话来给自己“撑撑腰”。

分时想法由来
虽然不懂黄版的“多重计算”到底是怎么个意思,但感觉黄版的理解是排斥“按单元格逐个进行计算”的。
按单元格计算这个想法在我心中由来已久,不仅仅是“循环迭代”。比如大家选中A1:A10,然后输入 公式 "=row()",按CTRL+SHIFT+ENTER进行赋值操作,这个时候A1:A10的值为1;2;3;...;10,我理解这个过程中 各个单元格 参与了计算。
当然也不仅仅是这个例子...请恕不一一道来.

公式数组

公式数组,承认抛出这个概念后我开始没有做什么解释,不过后来在 http://club.excelhome.net/viewth ... ;extra=&page=14 137楼已经做了解释:

CTRL+SHIFT+ENTER我理解为把公式返回值赋值到单元格区域的过程,这个过程会生成一个由公式值赋值到单元格区域组成的数组。
因此,range().FormulaArray 我的理解是在 单元格区域 中生成由 公式返回值组成的数组


公式数组 一方面就是简单采用了缩写(公式返回值组成的数组的缩写),另一方面这个名字会和 数组公式 产生强烈的感应。
究其原因是对黄版以 range().FormulaArray 以及 公式的输入方式(CTRL+SHIFT+ENTER)来判断公式是数组公式的做法“不敢苟同”。

公式就应该是那段“表达式”,其属性应该隐含在公式文本中,而不应该以它的输入方式来判断它的属性...否则在条件格式、名称定义中似乎就不存在“数组公式”了

对单元格区域选用不同的公式输入方式(CTRL+SHIFT+ENTER或CTRL+ENTER),只是对单元格区域产生了影响(形成一个数组或依然是普通的单元格)。


双平面结构,数组颗粒...

嗯,这个是本贴的核心,是自己感觉的创新所在。草版能分别表示可以接受和感到不错,我感到很欣慰。本贴核心的东西我们能达成共识,我和草版在这个地方不存在分歧。


OFFSET数组化  这个只是我对OFFSET函数数组用法的叫法,就如VLOOKUP函数的数组用法我会叫VLOOKUP数组化,当然实际讲的时候我可能还会指定具体哪个参数数组化...

双平面结构理解的方式中,数组是我们熟悉的,区域引用也是我们熟悉的,因此比较容易被理解和接受。


可应用性
在数组公式的探索中,我确实曾比较偏爱那些直接可以接受内存数组的函数,因为可以替代辅助列的功能。但我并不是一味追求技术上高难度,我信奉用合适的方法做合适的事情。此外,我对函数公式的理解也在不断演进。草版的观点和我的想法并无二致。

[ 本帖最后由 胡剑0227 于 2010-9-29 14:50 编辑 ]

TA的精华主题

TA的得分主题

发表于 2010-9-29 14:42 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
1、“多重运算”不是黄版创造的产物,而是帮助文件里就有的,你把他归于黄版了,所以你会认为他在维护他造的词,而打击你造的词。

2007版,“多重运算”就开始称为“多项运算”。我觉得这个词更为准确,即数组的多项元素参与运算。例如:{1;2;3}*2存在1*2、2*2、3*2共3个运算。
如何证明他们是“分时”而不是“同时”,即计算存在时间上的差异?例如1*2之后多少秒、毫秒、微妙之后才计算2*2?
【循环引用】中,设置迭代次数为1,那么按1次F9就执行1次“重新计算”的过程中,恐怕谁也无法撇清谁先谁后,2次之间才可以看出顺序。

如果“分时”不是这个意思,那么就是这个词让人直观地就误解了。

2、“双平面”基本可以(但不是一定)理解为“2个平面”,而多维引用返回的每一个区域都算1个平面的话,那么这个词就不太合适。之所以接受,是因为这个词在理解时具有可图像化的功效。

3、如果你的“公式数组”是你上面说的“公式返回值组成的数组的缩写”,那么A1输入=1+1,A2输入=2+3,这两个公式返回的值组成的A1:A2也算“公式数组”了?此外,单元格中公式返回的值,存储于单元格中,如果需要调用,还得再次引用单元格来取,而“内存数组”的精髓就是作为整体,可以直接调用。因而在应用的指导意义上,不能产生内存数组的多单元格数组公式,就是速度优势了。

[ 本帖最后由 gouweicao78 于 2010-9-29 15:06 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-9-29 15:05 | 显示全部楼层
到这里我不想解释什么了,还是那句,有些事情让时间去选择吧...

草版理解能力应该很好的,我真的不相信你真的不明白我上面讲的东西。我希望大家能以放开的心态来看这些问题,否则只能收获烦恼。纯字面上的文章没有多少意思。

[ 本帖最后由 胡剑0227 于 2010-9-29 15:54 编辑 ]
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-16 22:40 , Processed in 0.035289 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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