ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[讨论] 有志于成为数组公式高手的不要错过(功力修炼)(胡剑开课了...)

  [复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-5-8 20:37 | 显示全部楼层
本帖已被收录到知识树中,索引项:数组公式
原帖由 zhanhewang 于 2009-5-8 20:01 发表
恳请版主再提供一些实例,以便提高。


给自己点时间,只要有这个体悟,需要用到时就会有思路的。
数组公式,我的理解还是体现在 运算上,不是局限于函数。比如 10^(row($1:$5)),不过不知道你有没有理解数组的方向性,就是行,列。在一维数组单一单元格数组公式运用时一般体会不到。上面10^(row($1:$5))结果是列向量,而10^(transpose(^(row($1:$5)))),是行向量。这里的驱动就是指数数组。

row($1:$5))^0,也是一个列向量,驱动数组变成了底数数组。
如果指数,底数同时数组...这个你再试试吧,我不能都说光了,剥夺你的试探的权利,呵呵。

如果底数,指数的方向一致,方向不一致?

[ 本帖最后由 胡剑0227 于 2009-5-10 07:05 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-5-8 20:46 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
数组公式,函数有职能分配吧。我个人认为,有些具有专门性功能,有些是通用类函数,这些通用性函数就像是造词组句中的结构性成分,象 LARGE,SMALL,IF,LOOKUP,MID,等等除了基本的职能应用外,它们的作用很大程度体现在其在数组变形,构造数组时的优异表现。好好体会吧,我能感觉到你确实悟到了些东西。替你开心

[ 本帖最后由 胡剑0227 于 2009-5-10 07:08 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-5-8 21:12 | 显示全部楼层
应用举例:
使用定位方式,或者查找方式,选中了大批处于 离散 位置的单元格,如果要对这些单元格进行复杂的统计,比如大于平均值得个数,就需要先对其名称定义。这个时候名称定义的是一堆数,根本无法进行数组运算,但可以使用LARGE,SMALL进行转化为数组,这里LARGE,SAMLL的功能就是把 一堆数据 变成一个数组的过程,这个是其结构性作用,与其本来的大,小 功能没有多大关系。他的功劳是构造数组,排序本身没有什么意义。

TA的精华主题

TA的得分主题

发表于 2009-5-8 22:07 | 显示全部楼层
原帖由 胡剑0227 于 2009-5-8 21:12 发表
应用举例:
使用定位方式,或者查找方式,选中了大批处于 离散 位置的单元格,如果要对这些单元格进行复杂的统计,比如大于平均值得个数,就需要先对其名称定义。这个时候名称定义的是一堆数,根本无法进行数组运算 ...

终于知道EXCELHOME为什么人气旺盛的原因,就是因为有版主这样的人!
我在附件中试做几个,烦您看看。另你能否以一此例子说明。

添上附件中的效果,大家也可以悟一下,主要体会一下参数方向变换带来的影响

[ 本帖最后由 胡剑0227 于 2009-5-10 12:55 编辑 ]
附件所表现的效果.jpg

LOOKUP数组变形.rar

7.94 KB, 下载次数: 747

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-5-8 22:32 | 显示全部楼层
==========本楼问题与本帖主要问题之间有跳跃,主要涉及了IF的数组条件问题===========
先回答OFFSET函数的问题吧,我也就讲一下我自己的理解,可能不是很完善或正确,路过的或飘过的高手敬请指正。

OFFSET,第一参数是参照点,也可以使参照行,或列或参照平面;
          第2,3参数是偏移量,如果这里的偏移量是数组,那么OFFSET就成了立体的了,我们知道工作表平面是二维的,平面的,要让一个立体的序列搬迁到一个平面的矩阵中那谈何容易,这里缺一个对应关系。(如果事先在平面上给他们分配了位置那又不同了,稍后讲,呵呵)
于是看到的结果就是 #VALUE。明明你想的就是一个平面么,是单元格按序排布,有时是一行一行按序排布,感觉上就是一个平面,但是那是感觉,呵呵。
          第3,4参数是行列大小,这个也好理解,数组时记得也容易理解。
         
所以你的公式导致#VALUE的原因,不是你对上面知识理解的错,而是立体的缘故。不过我们可以改进。

[ 本帖最后由 胡剑0227 于 2009-5-10 12:57 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-5-8 22:36 | 显示全部楼层
接上楼,其实看这部分内容也是会受益匪浅的,初学可以略过,以免消化不良。这个是我继利用 递归运算解决公式中的循环问题后实现 条件上的真正数组条件的部分内容,比较有用,呵呵。 思维逻辑,主要就是由条件和循环构成的,这个是具有架构性质的,承载思维脉络的主干。(说得很严重,呵呵)
看帖

[ 本帖最后由 胡剑0227 于 2009-5-8 22:44 编辑 ]
从天空到地面.jpg

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-5-8 22:54 | 显示全部楼层
在上图L4:O6中的数组公式如下
=IF((COLUMN(A:D)+4*(ROW(1:3)-1))^0,OFFSET(A1,COLUMN(A:D)+4*(ROW(1:3)-1)-1,),)

会写数组公式,最好会用数组的方式去体会公式的运算过程。这里使用IF条件,IF的逻辑判断部分的数组,和 OFFSET的第二参数数组 是完全匹配的。这个很关键,两个齿轮咬合了,不致造成其中一个齿轮多出一个齿(相对于数组元素)没有落脚点。

思维过程:
IF逻辑判断的二维数组的 a11(一行一列位置)为1,于是对应返回 TRUE部分 对应的 b11,这里的b11 是由 Offset函数根据自身驱动参数的 C11进行运算产生的。这里之所以能一一对应过去是因为数组结构完全一致。
经过这个过程后,我们知道 OFFSET的立体的C11位置算是落到地面原先IF函数逻辑判断的数组中了。

想通一个元素落地的过程后,就能明白最后所有的立体的元素都落到地上来了,呵呵。于是最后能返回正确值。

在IF数组公式专门帖中我把这个方式称为 袋子,先用逻辑判断部分构造一个袋子,然后把天上的地上的反正统统装进袋子,呵呵。

[ 本帖最后由 胡剑0227 于 2009-5-8 22:58 编辑 ]

评分

4

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-5-8 23:03 | 显示全部楼层
原帖由 zhanhewang 于 2009-5-8 20:01 发表
恳请版主再提供一些实例,以便提高。


看了下自己以前的帖子,发现这个帖子可能难度比较合适:http://club.excelhome.net/viewth ... %2B%BA%FA%BD%A30227

TA的精华主题

TA的得分主题

发表于 2009-5-8 23:05 | 显示全部楼层
感谢版主指导,本人真的很缺这方面的知识,已收藏,以后再漫漫深刻领会。

TA的精华主题

TA的得分主题

发表于 2009-5-8 23:06 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
版主讲的真有点深奥。我得慢慢地咀嚼。我想应该能消化。
谢谢!!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-27 18:39 , Processed in 0.045777 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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