ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[Excel 函数与公式] [开_139]连续数字转换练习题

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2012-12-1 17:44 | 显示全部楼层
Zaezhong 发表于 2012-12-1 17:36
汇总了下各个楼层的公式,有多个公式的楼层分别取了满足要求的最短公式和非内存数组公式,具体评分由楼主来 ...

请看27楼附件,a1是0也没有问题阿。

点评

看了,你的答案效果跟楼主的不同  发表于 2012-12-1 17:46

TA的精华主题

TA的得分主题

发表于 2012-12-1 22:39 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
我觉得 column()\row() 应该算是内存数组公式吧。
column() 它就在内存中,既直接参与每个单元格的计算、又可参与整体的计算。因此,我认为算是。

TA的精华主题

TA的得分主题

发表于 2012-12-1 23:55 | 显示全部楼层
本帖最后由 titi012 于 2012-12-1 23:56 编辑
Zaezhong 发表于 2012-12-1 17:36
汇总了下各个楼层的公式,有多个公式的楼层分别取了满足要求的最短公式和内存数组公式,具体评分由楼主来定 ...


有点不同意见,
这问题的思路,大家差不多,方向正确的,答案就基本在50-60间,
只要采用了(COLUMN(A:J)=SUM.....形式的,生成的就是一个内存数组了. 这点可以按F9看出.
若有不妥,请指正.

点评

ZAE说的没错,孤独九剑时有不灵。  发表于 2012-12-2 09:14
C1:L1公式下拉属于内存数组公式,但是跟要求C1:L1下拉属于重复。F9可以看到的并不见得是真实的,比如三维引用的时候显示的是错误值,但是可以在单元格显示,眼见不见得是真实。  发表于 2012-12-2 08:53

TA的精华主题

TA的得分主题

发表于 2012-12-2 13:32 | 显示全部楼层
本帖最后由 Zaezhong 于 2012-12-3 11:08 编辑

题目简单而且思路相差无几,简要分析,高手可以忽略
区域转换_简析.zip (20.65 KB, 下载次数: 23)


本题涉及到了内存数组的问题,有两个概念先提一下:内存数组和多单元格数组公式
注:以下说明中内存数组和多单元格数组公式是不同的概念
内存数组
内存数组可以是常数数组,其作用是可以直接作为某一个函数公式的部分参数参与到其他运算,而且内存数组是一个整体,密不可分。

说明数据

说明数据
如上图使用=SMALL(A1:A20,{1,2,5}),该公式就是一个内存数组,可以在横向连续的3个单元格(如C1:E1)中输入得到结果{4,4,8},而且三个单元格中的公式完全相同使用=INDEX(SMALL(A1:A20,{1,2,5}),1)可以得到SMALL部分的第一个值,使用数字123可以分别获得每一个值。内存数组的一个特点是将结果赋值到单元格区域后,在每一个单元格中可以看到相同的结果。内存数组如果要全部显示,那么必需在多个单元格中显示,如果不显示可以作为整体参与到其他函数的运算中去。
多单元格数组公式
多单元格数组应该说包括的范围要比内存数组大一些,多单元格数组包括内存数组。
举例:要求在A1:A20单元格输入对应的行号
使用多单元格数组:=ROW()
内存数组:=ROW(1:20)
两者的区别在于ROW函数的参数,我们知道如果ROW行数省略参数那么默认就是使用单元格所在的行,多单元格数组公式其实是使用了一个参数的简化形式,换言之,使用ROW()这样的方法得到结果还使用了单元格的位置这一特性,使用公式=ROW()B2:B21输入得到的结果就不相同了。这种方法看似相同其实实质已经发生变化,每次参与到运算的结果已经发生了变化,在编写公式时根据不同的单元格位置可能有不同结果的函数包括CELL,INDIRECT,ROW,COLUMN,这些函数跟易失性函数有重复。在A1:A20单元格区域任意选择一个单元格(比如A5)通过使用F9查看结果,可以看到结果是数组{5},其值是单个值的数组,而使用ROW(1:20)在任意单元格使用F9看到都是{1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;20},省略的用法可以理解为是墙头草,随着位置的变化而变化,而内存数组的结果总是存在的。
变化下上面的举例:求1+2+3+……18+19+20的和,那么公式都是=SUM(ROW(1:20))了。
总结:
多单元格数组其实就是一种公式输入方法的说明,同样的道理,还包括单个单元格的数组公式已经简化为了数组公式,大致关系如下
20121202134644.png
在早期的正式竞赛区函数题有要求内存数组公式解答的题目,有空可以去看看。

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2012-12-2 08:54 | 显示全部楼层
wangg913 发表于 2012-12-1 22:39
我觉得 column()\row() 应该算是内存数组公式吧。
column() 它就在内存中,既直接参与每个单元格的计算、又 ...

看来有争议了,似乎也出现了总结的必要了

点评

那有劳了,我这几天加班。  发表于 2012-12-2 09:12

TA的精华主题

TA的得分主题

发表于 2012-12-3 11:29 | 显示全部楼层
CheryBTL 发表于 2012-11-17 08:15
C1:L1区域数组下拉,正好60字符:原来A2=1多余了,简化后56字符:突然脑子一转,发现A$1:A1是多余的,再省6 ...

=IF(COLUMN(A:J)=A1:A20*(MMULT(N(ROW(2:21)>COLUMN(A:T)),N(A1:A20>A2:A21))+A2:A21),1,"")
这个太强大了,我想过太半天,也想不出此做法,崇拜啊,大神! 呵呵.

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-12-4 13:42 | 显示全部楼层
谢谢ZAE的劳动,有劳了,评分没问题。等过段时间再来和大家一起学习。
上面我看是内存数组的有:
=MMULT(N(ROW(1:20)>COLUMN(A:T)),N(A1:A20<A2:A21))
=MMULT((ROW(1:20)*COLUMN(A:T)<=ROW(1:20)^2)*TRANSPOSE((A1:A20=0)*A2:A21),ROW(1:20)^0)+A1)*A1:A20
=A1:A20*SUBTOTAL(9,OFFSET(A1,,,ROW(2:21)))-MMULT(N(ROW(2:21)>COLUMN(A:T)),A1:A20*A2:A21)

出题时,我想的内存数组是右拉下拉实现的,是严格意义上内存数组。不能靠多单元格来实现,输入到1个单元格里也仍能运算出所有信息,因为单单元格、多单元格、F9、定义成名称都会影响到数组的运算形式。
多单元格数组公式和单单元格数组公式、内存数组与非内存数组是从不同角度来区分的。
上面的答案使用了ROW()或column()的我叫区域数组,但没有放到内存数组中。
反正知道什么回事就成了,这个问题发展到今天也没讨论的必要。并且目前不影响到大家的评分。

选择A1:A10分别输入下面的4个公式:
=SUM(ROW()+RAND()*0)
=SUM(ROW(1:10)+RAND()*0)
=SUM(ROW(1:10))
=SUM(ROW())

TA的精华主题

TA的得分主题

发表于 2013-1-6 09:55 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2013-3-8 23:44 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2020-1-23 02:41 | 显示全部楼层
=IF((SUM((A1:A20<>A2:A21)*A1:A20)+1-MMULT(N(ROW(1:20)<=COLUMN(A:T)),(A1:A20<>A2:A21)*A1:A20))*A1:A20=COLUMN(A:J),1,"")来个火车
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-23 09:55 , Processed in 0.039838 second(s), 16 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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