ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

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

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2017-6-9 14:23 | 显示全部楼层
本帖已被收录到知识树中,索引项:INDEX
先理解什么叫“绝对交集”:

在单元格输入的普通公式中,如果把一个只需要单值的数值,写成一个单行或单列的区域引用,Excel将这个引用解释为对公式所在的列或行,与该引用的行或列相交的单元格的引用,这叫做绝对交集,又叫做隐含交叉引用。例如:
在单元格C2输入公式=A1:A3*5,相当于=A2*5,因为单元格A2和C2位于同一行。
在单元格B5输入公式=A2:C2*5,相当于=B2*5,因为单元格B2和B5位于同一列。


然后,要大家再用火眼金睛看一下ROW的语法
   ROW(reference)
函数ROW的参数是一个单元格区域的引用

于是,结合绝对交集的概念:

在单元格输入的普通公式中,ROW($1:$3)适合绝对交集,因为ROW的参数是单元格引用;而数组常量{1;2;3}并不适用——这就是本质区别!!!

TA的精华主题

TA的得分主题

发表于 2017-6-9 14:35 | 显示全部楼层
所以,在单元格D1的公式中:
=INDEX($A$1:$A$10,N(IF(1,ROW($1:$3))))   适用绝对交集

该公式相当于:
=INDEX($A$1:$A$10,N(IF(1,ROW(D$1))))


=INDEX($A$1:$A$10,N(IF(1,{1;2;3})))   并不适用绝对交集
式子中的N(IF(1,{1;2;3}))无法返回一个单值给INDEX的第二个参数,所以返回#VALUE!

如果把=INDEX($A$1:$A$10,N(IF(1,{1;2;3})))  输入成数组公式则可以返回1

为什么呢?

因为这时候INDEX才可以对第二个参数的进行数组运算。(关于数组运算,是另一个值得大家去认真理解的知识点。)

事实上,数组公式{=INDEX($A$1:$A$10,N(IF(1,{1;2;3})))} 并不只返回1,它其实返回一个数组{1;2;3},但大家要明白一个很基本的道理:一个单元格只能返回一个单值。这种情况下,单元格只能保存数组中的第一个值。

TA的精华主题

TA的得分主题

发表于 2017-6-9 14:57 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
e表格学习 发表于 2016-1-12 09:21
“EXCEL中不能以 {{},{}}这种结构来呈现”。那么,附件中的情况如何解释?

我在60-62楼解释楼主第一个问题的同时,发觉已经同时解答了你的问题

TA的精华主题

TA的得分主题

发表于 2018-3-1 17:20 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2018-12-9 17:53 | 显示全部楼层
ZhouFfett 发表于 2017-6-9 14:35
所以,在单元格D1的公式中:
=INDEX($A$1:$A$10,N(IF(1,ROW($1:$3))))   适用绝对交集

您好,为什么我把D1单元格的公式改成INDEX($A$1:$A$10,N(IF(1,ROW($A$1:$A$3)))),并且将这个公式复制到D7单元格,在非数组公式输入的情况下,显示结果还是1,而不是#VALUE!错误值呢?按照绝对交集理论,a1:a3与d7单元格并没有位于同一行或者同一列啊?是不是我对绝对交集理解得是有误差的,望老师指导一下,万分感谢!

TA的精华主题

TA的得分主题

发表于 2018-12-9 18:01 | 显示全部楼层
ZhouFfett 发表于 2017-6-9 14:35
所以,在单元格D1的公式中:
=INDEX($A$1:$A$10,N(IF(1,ROW($1:$3))))   适用绝对交集

对了,老师,还有一个问题,我在A1单元格中输入={1,2,3},结果是显示1,而不是错误值,这个又是因为什么原因啊?

TA的精华主题

TA的得分主题

发表于 2020-10-27 12:44 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
胡剑0227 发表于 2011-4-28 12:51
第二个问题:
我从你的描述中可以感觉到对 大颗粒的理解 还没有到位。当然啦,这也是你问这个问题的原因, ...

为什么不可以理解为:因为D8在要求返回第2个元素的第2行,因为第2个元素只有一行,所以可以在行方向上扩充、D9也是这个意思?

TA的精华主题

TA的得分主题

发表于 2021-4-9 12:00 | 显示全部楼层
ZhouFfett 发表于 2017-6-9 14:35
所以,在单元格D1的公式中:
=INDEX($A$1:$A$10,N(IF(1,ROW($1:$3))))   适用绝对交集

讲得很明白。学习了。
为解决一个实际问题,网上搜到N+IF的示例和帖子。

我的问题很简单,但被我搞得很复杂。好处是发现了内存数组的问题,学习了N+IF的一些知识。我的问题是:
A5:A23 是一列日期,其中包含空格和0;
B5:B23 是一列日期,其中包含空格和0;
C5:C23 是一列数字,其中包含空格和0。
查找出A5:A23列中的部分日期,A列中的这部分日期是大于B7日期的所有小于B列日期的那些日期。然后,将A列中对应行的C列的数字相加。
困难在于要比较A/B列日期的大和小,而且大于B7和小于B列的日期是多个(通过查找和比较得出一个数组),所以要剔除(A/B列)的空格和0的单元格。我的思路是重新建立不含空格和0的内存数组,进行比较,找到指定大于固定B7的日期,以及小于B列日期的那些日期。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-5-2 09:37 , Processed in 0.029715 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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