ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 学习index +N+if产生大颗粒数组的若干问题

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2011-4-28 14:36 | 显示全部楼层
本帖已被收录到知识树中,索引项:INDEX
呵呵,SUM(INDEX(大颗粒数组,N(IF(1,{1;2})),1)),这个公式最终只能得到{3,30},并不能得到33的,你看看附件呢,说的就是这个意思。

另外,OFFSET,INDIRECT,INDEX分开来说吧,尤其INDEX,它的方式很不同,它可以直接对数组操作的,已经无关乎 引用不引用了,OFFSET和INDIRECT还是比较相近的。

我说的分量之间互不干扰指的是INDEX的这个情况。
==========================================================================
=SUM(INDEX(大颗粒数组,N(IF(1,{1})),1)+{0;0;0})    和  =SUM(INDEX(大颗粒数组,N(IF(1,{1})),1))  以及 =SUM(INDEX(大颗粒数组,N(IF(1,{1})),1)*3)  你体会一下,呵呵。原理很简单,就是用一般的数组运算机制就可以了。

[ 本帖最后由 胡剑0227 于 2011-4-28 14:39 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-4-28 14:38 | 显示全部楼层
原帖由 胡剑0227 于 2011-4-28 12:51 发表
第二个问题:
我从你的描述中可以感觉到对 大颗粒的理解 还没有到位。当然啦,这也是你问这个问题的原因,呵呵。
开始部分你的理解和我一样:
INDEX($A$1:$B$10,N(IF(1,{1;2;3})),0)先返回了一个三行一列的大颗粒 ...

胡老师能否详细解释一下从分量的角度究竟是如何匹配的?我还是不懂呀!对于{1,2;3,4}这样数组,第二个分量是2还是3呢?也就是说各个分量的顺序是不是也是先行后列的顺序呢?

TA的精华主题

TA的得分主题

发表于 2011-4-28 14:42 | 显示全部楼层
汗,这个东西源自 INDEX(数组,1,0),一个参数为0时返回整行造成的,一般的数组直接可以称元素,先不要急,接受是需要一定时间的,呵呵。不要和一般的数组混淆了...需要一个过程..

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-4-28 14:47 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
原帖由 胡剑0227 于 2011-4-28 14:36 发表
呵呵,SUM(INDEX(大颗粒数组,N(IF(1,{1;2})),1)),这个公式最终只能得到{3,30},并不能得到33的,你看看附件呢,说的就是这个意思。

另外,OFFSET,INDIRECT,INDEX分开来说吧,尤其INDEX,它的方式很不同,它可以 ...

谢谢胡老师,原来index还是比较特别的,我在输入“=SUM(INDEX(大颗粒数组,N(IF(1,{1;2})),1))”的单元格按f9只能返回一个#VALUE!,并不能返回内存数组。

TA的精华主题

TA的得分主题

发表于 2011-4-28 14:59 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
F9只能做参考,它是受限的。返回#VALUE!还有一个原因应该是 EXCEL中不能以 {{},{}}这种结构来呈现,所以它只能变成 #VALUE!了,类型不匹配么,呵呵。 在大颗粒的时候很多都这样的

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-4-28 16:02 | 显示全部楼层
原帖由 胡剑0227 于 2011-4-28 14:59 发表
F9只能做参考,它是受限的。返回#VALUE!还有一个原因应该是 EXCEL中不能以 {{},{}}这种结构来呈现,所以它只能变成 #VALUE!了,类型不匹配么,呵呵。 在大颗粒的时候很多都这样的

谢谢胡老师,幸苦你了。
我问题比较多呀,麻烦你了,刚又发现了几个问题:
您的贴子附件“INDEX的N+IF.xls”中的“形变应用”工作表中有这样的两句话:
   1、外套IF只是为了应付F15:F18中使用了RAND(最外层的if)
    2、使用VALUE是为了绕过N只提取区域的左上角单元格这一特性
对于这个函数=IF(1,INDEX($B$12:$B$21,N(IF(1,VALUE(F15:F18)))))我实验了一下,如果去掉了最外层的if函数,此时按f9后发现I15:i18 都变成了#value!,能解释一下原因吗?还有“使用VALUE是为了绕过N只提取区域的左上角单元格”,这里用value函数的原理究竟是什么,您是怎么发现它有这样的功能的?

[ 本帖最后由 Saint_Zuo 于 2011-4-28 16:04 编辑 ]

TA的精华主题

TA的得分主题

发表于 2011-4-28 19:59 | 显示全部楼层
第一个问题:
呵呵,研究数组我一般从空间和时间两个方面去考虑的,数组,就是时域中的一个遍历式循环。如果数据源使用了RAND,这是个易失性的,简单说就是每一个触动都容易引起重算,这个你明白的,呵呵。所以针对RAND的数据源在时间上的要求就比较高,平时使用过程中我发现公式外套一个 IF 往往能解决问题,我自己笼统的解释为争取了更多的资源。

第二个问题:
这个涉及参数的类型,很基础但又容易忽视的地方。
N函数套在区域,如A1:B3外面,就只保留做左上角的单元格,如果上面的公式不使用VALUE,那么整个IF的返回属性依然是一个区域,所以套一个N就只剩下左上角的单元格了。使用VALUE就是要把区域引用 的属性去除。N(IF({1},F15:F18)) 这样应该也行,当然这涉及IF的运算机制了,呵呵。


所以关键并不是VALUE,而是怎么剔除F15:F18的引用属性,不知道 --  是否也行,想想应该行吧,呵呵。

[ 本帖最后由 胡剑0227 于 2011-4-28 20:00 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-4-29 11:17 | 显示全部楼层
谢谢胡老师。比如我在a1:a5中均输入公式=INT(RAND()*10+1),然后选中c1:c5并输入数组公式{=COUNTIF(A1:A5,A1:A5)},那么此时我按f9不管多少次,c1:c5均能返回正确的结果,不会出现#value!。请教为什么这里不需要使用{=IF(1,COUNTIF(A1:A5,A1:A5))}呢。是不是什么时候需外套if什么时候不需要是没有判断规则的呢?有的话该怎么判断呢?

TA的精华主题

TA的得分主题

发表于 2011-4-29 16:18 | 显示全部楼层
呵呵,曾经有一个题,好像是MATCH的数组用法,数据源用了RAND的,在2003的时候不能正常运作,需要加IF,而在2007的时候不用加IF也能正常运行,所以我觉得这个东西是 Excel 内部机制问题,我们不需要过多追求,它能正确最好,不能的时候你套一个IF试试,就这样,呵呵

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-4-29 16:42 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
原帖由 胡剑0227 于 2011-4-29 16:18 发表
呵呵,曾经有一个题,好像是MATCH的数组用法,数据源用了RAND的,在2003的时候不能正常运作,需要加IF,而在2007的时候不用加IF也能正常运行,所以我觉得这个东西是 Excel 内部机制问题,我们不需要过多追求,它能正确 ...

谢谢胡老师,看来有些东西是要靠不断尝试才能发现总结的,很难用一些现成的理论去支持或推导它。也许琢磨不透正是excel的魅力所在吧!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-24 18:51 , Processed in 0.048181 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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