ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

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

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2010-4-9 15:14 | 显示全部楼层
本帖已被收录到知识树中,索引项:数组公式
第二个:
=LOOKUP(COLUMN(A:D)+(ROW(I4:L6)-4)*4,ROW($A$1:$A$12),$A$1:$A$12)
第三个:
=LOOKUP(COLUMN(A:C)+(ROW(I8:K11)-8)*3,ROW($A$1:$A$12),$A$1:$A$12)
都是三键。
关键是得出第一个参数!!

TA的精华主题

TA的得分主题

发表于 2010-4-9 16:04 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
力挺胡版主呐

TA的精华主题

TA的得分主题

发表于 2010-4-9 17:24 | 显示全部楼层

TA的精华主题

TA的得分主题

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

回复 7楼 mxqchina 的帖子

精髓,谢谢。

TA的精华主题

TA的得分主题

发表于 2010-4-9 17:58 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2010-4-10 09:55 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
原帖由 胡剑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)-1,),)

会写数组公式,最好会用数组的方式去体会公式的运算过程。这里使用IF条件,IF的逻辑判断部分的数 ...

呵呵,不能说全懂了,但总算还是有所悟。昨天我首先是构建了一个这样的位置区域数组(第一部分的)=COLUMN(I:N)*0+ROW(I1:N2)^0,但构建完成后,这么也不能使它同LOOKUP函数起了关联,因为LOOKUP函数是一个查找返回对应位置的函数,所以我才又折回去想如何构建一个能使用LOOKUP的数组COLUMN(A:F)+(ROW(I1:N2)-1)*6,由于LOOKUP的后两个参数是对应一致的,也就是说最后一个是返回列,所以必须在第一个参数上作文章,构建一个两行六列的并且有序的数组COLUMN(A:F)+(ROW(I1:N2)-1)*6。今天看到后面的帖子才发现其实我昨天的工作也没有白干,它可以再结合IF函数和OFFSET函数来得到结果,就是我昨天想的要把它放在一个二行六列的区域就必须先建立这样一样区域的数组,=COLUMN(I:N)*0+ROW(I1:N2)^0,再结合你所讲的内容,让对应的元素偏移对应的位置COLUMN(A:D)+4*(ROW(1:3)-1)-1,),并且再让它通过IF预定好的袋子对应装进去,呵呵,太高了……谢谢!!
公式为:IF(COLUMN(I:N)*0+ROW(I1:N2)^0,OFFSET(A1,(COLUMN(A:F)-1)+(ROW(I1:N2)-1)*6,),)
当然了因为我这个是两次组合在一块的,所以前后的数组没有联系,显得有点乱,没有老师的那样前后紧密关联,让人容易理解,慢慢改进吧,呵呵~~

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2010-4-10 10:00 | 显示全部楼层
原帖由 胡剑0227 于 2009-5-8 23:20 发表


看了你的公式,2*6的,=LOOKUP(COLUMN()+(ROW()-1)*6-8,ROW(1:12),A1:A12)
虽然在单元格显示时是对的,但你试试 用F9查看一下,可以发现结果值是一个单元素数组。需要对COLUMN函数进行修正。
应该把 COLUMN()改 ...

对我所写公式也就进行这样一步步仔细的点评噢!呵呵~~~谢谢!!

TA的精华主题

TA的得分主题

发表于 2010-4-10 10:10 | 显示全部楼层
原帖由 zhanhewang 于 2009-5-9 09:45 发表
请教:公式=IF((COLUMN(A:D)+4*(ROW(1:3)-1))^0,OFFSET(A1,COLUMN(A:D)+4*(ROW(1:3)-1)-1,),)返回的内存数组为何与显示不同?
见附件。

这个公式也可以写成
=IF(ROW($1:$3),OFFSET(A1,COLUMN(A:D)+4*(ROW(1:3)- ...

刚刚才惊喜于自己昨天的功夫没白下,可看到这里就发现了一个问题,你后面的公式如此的简单。——不过,细细一琢磨,是的,因为数组可以扩充吗!所以象这样数组中的元素一样的数组,可以利用“数组扩充”来简化公式。呵呵,我分析的对吗?这是在学习此贴http://club.excelhome.net/viewth ... ;page=57#pid3715950时的收获……为我自己高兴~~呵呵

TA的精华主题

TA的得分主题

发表于 2010-4-10 10:16 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
原帖由 胡剑0227 于 2009-5-9 12:24 发表


恩,看到这个真的很欣慰,也祝贺你。
现在就给你讲解怎么样得到和常量一样效果的内存数组。
2*6的那个:({1,2,3,4,5,6;7,8,9,10,11,12}={1,2,3,4,5,6}+{0;1}=COLUMN(A:F)+6*(ROW($1:$2)-1)
=TRANSPOSE(ROW($1 ...

看到此贴能更加明确建立内存数组的方式方法,我之前建立这个函数时总是有点晕,看到如此清晰的讲解,不说一声谢谢于心不忍,呵呵~~谢谢!

TA的精华主题

TA的得分主题

发表于 2010-4-10 10:36 | 显示全部楼层
原帖由 jackeroo 于 2009-5-9 14:11 发表
哈哈,版主果然功力深厚,经你这么一解释,我也明白了很多。

掿个顺风车,出道简单题目,利用SUMX2PY2函数,求1到100的自然数的平方和。不得利用常量数组,不用名称。字符无限制。

=SUMX2PY2(ROW(1:100),ROW(1:100)*0)这样算正确吗?呵呵
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-7-6 08:59 , Processed in 0.038621 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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