ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[分享] 深化数组的自适应,详细解释IF{1,0},choose{1,2}等样式是如何返回数组的

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2010-1-15 13:55 | 显示全部楼层 |阅读模式
以下是本人结合自己的经验对IF{1,0},choose{1,2}等样式是如何返回数组的全面解释
同时也对数组的运算再一次强调运算规则

[ 本帖最后由 Violet_Universe 于 2010-12-3 23:22 编辑 ]
1.gif
数组只适应图解.gif
2.gif
3.gif
4.gif
5.gif
6.gif
7.gif

深化数组的自适应,详细解释IF{1,0},choose{1,0}等样式是如何返回数组的.rar

42.43 KB, 下载次数: 1779

评分

3

查看全部评分

TA的精华主题

TA的得分主题

发表于 2010-1-15 13:59 | 显示全部楼层
拜读..........................

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-1-15 14:02 | 显示全部楼层

回复 2楼 davidhawk 的帖子

互相交流可能也有不太对的地方,还请指教

TA的精华主题

TA的得分主题

发表于 2010-1-15 14:14 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
嗯,这些应该是数组公式中的精髓部分了。收藏,有空看看,有没有突破的地方,呵呵

TA的精华主题

TA的得分主题

发表于 2010-1-15 14:24 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2010-1-15 14:27 | 显示全部楼层

回复 3楼 Violet_Universe 的帖子

学习了~谢谢

不过我有个建议,您在截图的时候把行号列标都截出来的话,我们看起来会比较容易看明白,因为会知道是内容所说的是哪些单元格区域嘛。

不过看附件也可以了。小弟并没有刁难的意思
复件 未命名.JPG

TA的精华主题

TA的得分主题

发表于 2010-1-15 14:47 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
基本上都说到了吧,再补充一点。

用这里的说法,对于if还有choose的“驱动参数”,如果是一个含有区域引用的表达式,其行为可能不受外层函数的数组要求所影响

比如说,普通公式=SUMPRODUCT(IF(A1:A3,{1;2;3},{10,20}))
对于大多数内置函数来说,外层SUMPRODUCT明确要求数组参数,即使整个公式没有以数组形式输入,仍然会按照数组方式去解释,但是这条对于if和choose行不通,不会强制驱动参数以数组方式解释,这里的A1:A3仍然采用绝对交集原则
假如A1=TRUE; A2=FALSE, A3=#N/A,则上面的公式写在第一行得到6写在第二行得到30写在第三行得到#N/A写在其它行得到#VALUE!.,当然如果是数组公式,结果自然是#N/A

if还有choose的第一参数,不受外层的数组要求影响,对于其中区域引用参数的解释按默认方式进行。如果计算结果不是数组,那么就直接把后面所对应的表达式结果传递给外层参数,这里的表达式结果可能为任意类型,包括引用、三维引用、联合引用、引用数组等特殊的数据结构,能否处理、如何处理完全看外层函数的能力。并且此时是破坏数组的,如果外围环境不是明确要求数组,也不是直接作sum这种包罗万象的参数的话,只取数组首元素,简单例子:=SUM(0+IF(,,{10,20})) 结果是10

而如果if的第一参数运算结果是数组,这时候一定会进行三个参数的数组协调操作,不可能返回三维引用、联合引用这些数据结构,返回的必然是数值、文本、逻辑值、错误值构成的数组。

有一个例外,如果if公式写在一个名称中,第一参数即使是{1,0}这样的明确数组,但是调用的时候没有用数组公式、外层没有数组要求、也不是直接作sum这类函数的参数,会导致取数组首元素运算,而不是数组式的运算
比如,名称a=IF({1;0},{10;20},{100,1})
普通公式 =SUM(0+a) 结果是10

TA的精华主题

TA的得分主题

发表于 2010-1-15 14:50 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2010-1-15 15:00 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
研究劲头都足的,膜拜下

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-1-15 15:13 | 显示全部楼层

回复 7楼 wellful 的帖子

谢谢wellful 兄的意见,以后会注意呵呵
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-22 02:04 , Processed in 0.039365 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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