ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

当山姆遇上乔斯,一场纷扰无可避免(sum+choose)

[复制链接]

TA的精华主题

TA的得分主题

发表于 2011-2-15 19:22 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
情人节里,论坛里正被Piny发现的INDEX+N+IF搅得沸沸扬扬,这边山姆和乔斯又纠缠到一起了!
  1. =SUM(CHOOSE({1,2,3,4},1,2,3,8,J6:J28))
复制代码
这个公式的结果是322,当SUM遇上CHOOSE时,竟然不需三键而进行了数组运算!

大家赶快来帮忙!看看他俩之间到底发生了什么?情人节后他俩又将有何进展?

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2011-2-15 20:42 | 显示全部楼层
留个脚印,关注中。。。。

TA的精华主题

TA的得分主题

发表于 2011-2-15 20:42 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2011-2-15 20:52 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
F9,发现CHOOSE产生一个2维的数组,SUM处理无需数组公式

TA的精华主题

TA的得分主题

发表于 2011-2-15 21:06 | 显示全部楼层
{1,2,3,4} 是1*4数组
J6:J28 是23*1引用
二者进行数组扩充,生成一个 23*4的数组。
虽然 j6:j28 最终没有参与计算。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-2-15 21:29 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
原帖由 ZHYZ 于 2011-2-15 20:42 发表
没什么:
=SUM({1,2,3,8}*23)

谢谢解答,但解释的较简单,希望能深入阐述。

我个人的理解是:CHOOSE可以产生内在数组,这可以通过以下方法验证:
=CHOOSE({1,2,3,4},1,2,3,8,J6:J28)产生的是一个23行、4列的内存数组,每一行的元素都为1,2,3,8
当在单个单元格中输入该公式时,只显示该数组的第1个元素,即1,
如果选中一个23行4列的单元格然后输入公式并按三键结束,将恰好全部显示该数组。如果选择的区域大于23行4列,则超出的行或列区域的结果为#N/A

我的问题其实是:CHOOSE()产生的数组会有哪些变化?为什么把J6:J28改为J6:M28时公式结果不变?难道CHOOSE()只匹配该区域的行数,而与列数无关?怎样才能做到与列数相关?
还有最关键的问题就是,CHOOSE()产生的内在数组在实际中可以有哪些应用?

TA的精华主题

TA的得分主题

发表于 2011-2-15 21:57 | 显示全部楼层
原帖由 ZHYZ 于 2011-2-15 20:42 发表
没什么:
=SUM({1,2,3,8}*23)

大侠,23怎么来的?
语法:CHOOSE(index_num,value1,value2,...)
J6:J28跟1,2,3,8是同属于Value,为何不参与计算?
这个公式真的搞不清楚,请赐教,谢谢!

TA的精华主题

TA的得分主题

发表于 2011-2-15 23:00 | 显示全部楼层
很有趣的现象 猜想
1.
=SUM(CHOOSE({1,2,3,4},5,6,7,8,E5:G5))
=(5+6+7+8)*1

2.
=SUM(CHOOSE({1;2;3;4},5,6,7,8,E5:G5))
=(5+6+7+8)*3

3.
E5:G5输入任意值都不影响结果

4.(引用最末范围)
=SUM(CHOOSE({1;2;3;4},5,6,7,8,E5:G5,E8:H8))
=(5+6+7+8)*4

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-2-16 00:34 | 显示全部楼层
原帖由 piny 于 2011-2-15 23:00 发表
很有趣的现象 猜想
1.
=SUM(CHOOSE({1,2,3,4},5,6,7,8,E5:G5))
=(5+6+7+8)*1

2.
=SUM(CHOOSE({1;2;3;4},5,6,7,8,E5:G5))
=(5+6+7+8)*3

3.
E5:G5输入任意值都不影响结果

4.(引用最末范围)
=SUM(CHOOS ...


好!CHOOSE()的第1个参数是单行或单列数组有玄机!如果是多行多列数组呢?

TA的精华主题

TA的得分主题

发表于 2011-2-16 10:31 | 显示全部楼层
原帖由 piny 于 2011-2-15 23:00 发表
很有趣的现象 猜想
1.
=SUM(CHOOSE({1,2,3,4},5,6,7,8,E5:G5))
=(5+6+7+8)*1

2.
=SUM(CHOOSE({1;2;3;4},5,6,7,8,E5:G5))
=(5+6+7+8)*3

3.
E5:G5输入任意值都不影响结果

4.(引用最末范围)
=SUM(CHOOS ...


试了试
=SUM(CHOOSE({1;2;3;4},5,6,7,8,E5:G5))
=(5+6+7+8)*1
=26


=SUM(CHOOSE({1;2;3;4},5,6,7,8,E5:G6))
=(5+6+7+8)*2
=52

=SUM(CHOOSE({1;2;3;4},5,6,7,8,E5:G7))
=(5+6+7+8)*3
=78

=SUM(CHOOSE({1;2;3;4},5,6,7,8,E5:G10))
=(5+6+7+8)*6
=156
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-23 02:37 , Processed in 0.035254 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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