ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

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

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2011-12-18 23:40 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖已被收录到知识树中,索引项:数组公式
参加数组班有什么要求吗?怎样加入呢?

TA的精华主题

TA的得分主题

发表于 2011-12-19 08:30 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
八月十五 发表于 2011-12-18 23:40
参加数组班有什么要求吗?怎样加入呢?

看看培训中心 2012年2~6月份的计划就知道了

http://t.excelhome.net/forum.php?mod=redirect&goto=findpost&ptid=12822&pid=214040

TA的精华主题

TA的得分主题

发表于 2011-12-19 11:10 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
高深莫测,仍然有很多很多看不懂。

TA的精华主题

TA的得分主题

发表于 2011-12-19 11:21 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2011-12-20 15:58 | 显示全部楼层
本帖最后由 cee1011 于 2011-12-20 16:04 编辑

第一阶段学习完成,整理了下学习笔记。
1.提升数组意识
1.mxqchina版主在二楼提供的公式 =--RIGHT(SMALL(ROW(A2:G9)*1000+A2:G9,COLUMN($A:$G)+(ROW($A$2:$G$9)-2)*7),3)
关键部分是:ROW(A2:G9)*1000及COLUMN($A:$G)+(ROW($A$2:$G$9)-2)*7
K=COLUMN($A:$G)+(ROW($A$2:$G$9)-2)*7) 构建一个8×7的数组:row和column的结合构建数组。
由COLUMN($A:$G)得到{1,2,3,4,5,6,7} 行数组,有逗号间隔的!!
由ROW($A$2:$G$9)得到{2;3;4;5;6;7;8;9} 列数组,用分号间隔的!!
{构建数组可以用row和column(transport(row()))同“+”和“^”的结合,构建所需要的数组,辅助函数可以用indirect。}
COLUMN($A:$G)+(ROW($A$2:$G$9) 这边引用的是数据源所在的列及行,一般不会去删除数据源所在的行列。如果用row(1:8)来生成垂直数组 ,但是如果在第一行到第十行中间删除或者插入一列的话,row(1:8)就会出现变化,用row(indirect"1:8"))则没有这个问题【所以要嘛应用数据源的行列要嘛用indirect】。这个也可同胡版一直强调同定义名称相结合。
要与生成数据源的行高度相等的垂直数组也可以用=ROW(INDIRECT("1:"&COUNTA($A$2:$G$9))){好长啊,一般数据源在比较多行数的地方可以这样用}
定义了下row(1:10),每次按ctrl+F3,引用位置老是出现变化。。用定义名称也要担心删除行或者插入行的问题。
  SMALL(ROW(A2:G9)*1000+A2:G9,K):small是对整个数组的元素进行排序,而不是单独就每个行排序,所以不能对每一行数据加一个同样相等的数的再排序(!!!!),而要逐行累加。当然有借有还,所以再用right取值。
  用right取得的后三位数的数字(应是文本类型的,可在前面加--,也可以*1,可以+0)。

点评

确实以后大家可以一起考虑下公式的强壮性问题,就是应对插入行列,删除行列的问题...  发表于 2011-12-20 16:11

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2011-12-20 16:38 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2011-12-21 12:06 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
通过以上学习,感觉这个数组功能很强大,数组功能能否用条件格式中,如以下,请各位帮忙想想,谢谢~~
求助:数独表——条件格式设置
http://club.excelhome.net/thread-806872-1-1.html

点评

条件格式中可以比较完美的使用数组公式  发表于 2011-12-22 23:07

TA的精华主题

TA的得分主题

发表于 2011-12-22 09:14 | 显示全部楼层
关于数组表达式的通用方法,如下函数公式,只能表达,当A1=1-4时,Row(1:1-4)的数组表达方式,
{=IF(A1=1,1,IF(A1=2,ROW(1:2),IF(A1=3,ROW(1:3),IF(A1=4,ROW(1:4),""))))}
请问能否做一个通用公式,类似于:当A1=n时,可以把Row(1:n)表达出来,n是可变整数(不固定),如n=1,2,3....等

谢谢~~

点评

可以利用INDIRECT函数,比如ROW(INDIRECT("1:"&n))  发表于 2011-12-22 23:06

TA的精华主题

TA的得分主题

发表于 2011-12-26 09:54 | 显示全部楼层
虽然是还做不出任何总结,但是此贴对我受益匪浅!

点评

呵呵,大家觉得有所收获是我最开心的,此贴还是有点难,有点涩,呵呵  发表于 2011-12-26 11:07

TA的精华主题

TA的得分主题

发表于 2011-12-26 17:14 | 显示全部楼层
本帖最后由 翰墨水木 于 2011-12-26 17:18 编辑
胡剑0227 发表于 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) ...


这段讲解,这个袋子是指IF么?如果OFFEST第一个参数为区域,那要怎么弄呢?求讲解!数组公式用公式求解好像有点不够用了!

点评

先绕过去吧,关系不大,只要把其中串接的部分吃透就好了  发表于 2011-12-26 17:49
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-12-24 04:23 , Processed in 0.049643 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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