ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[讨论] 怎样的运算能得到数组{11;12;13}与数组{21,31;22,32;23,33}合并成

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-1-1 19:39 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
原帖由 wcymiss 于 2011-1-1 17:35 发表
=CHOOSE({1,2,3},{11;12;13},INDEX({21,31;22,32;23,33},0,1),INDEX({21,31;22,32;23,33},0,2))

方法可行,只是能不能不用拆分第二个数组来合并?

TA的精华主题

TA的得分主题

发表于 2011-1-1 21:31 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2011-1-2 00:45 | 显示全部楼层
原帖由 lhx120824 于 2011-1-1 19:39 发表

方法可行,只是能不能不用拆分第二个数组来合并?

提供一个解法,不是最简单的,但是按理说能扩展应用来解决问题。不限于单元格引用,可以是常量数组形式或者内存数组。供楼主参考,

Book1.zip

4.67 KB, 下载次数: 27

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-1-2 08:25 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
原帖由 shaowu459 于 2011-1-2 00:45 发表

提供一个解法,不是最简单的,但是按理说能扩展应用来解决问题。不限于单元格引用,可以是常量数组形式或者内存数组。供楼主参考,

谢谢提供了很好的解题思路。值得细细研究研究。
shaowu459提供的附件中
数组扩充截图
数组扩充.gif

[ 本帖最后由 lhx120824 于 2011-1-2 09:21 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-1-2 08:46 | 显示全部楼层
原帖由 shaowu459 于 2011-1-2 00:45 发表

提供一个解法,不是最简单的,但是按理说能扩展应用来解决问题。不限于单元格引用,可以是常量数组形式或者内存数组。供楼主参考,


先临时总结如下:(继续等待其他的方法)

1、wcymiss 在10楼提供的先分解数组成单列再用CHOOSE({})函数并联的方法:
=CHOOSE({1,2,3},{11;12;13},INDEX({21,31;22,32;23,33},0,1),INDEX({21,31;22,32;23,33},0,2))

2、shaowu459 在13楼提供的分解讲解很细,让人一看就懂:
两个数组都扩展然后数组相加的方法:
=MMULT({11;12;13},{1,0,0})+MMULT({21,31;22,32;23,33},{0,1,0;0,0,1})

3、也可只扩展第二个数组再用if函数并联的方法:
=IF({1,0,0},{11;12;13},MMULT({21,31;22,32;23,33},{0,1,0;0,0,1}))

4、如果第二个数组只有1列,就可以用李兴德在7楼提供的方法:
数组公式:
=IF({1,1,0},A1:B3,C1:C3)

5、如果数组都是有规律的纯数值的话,也可用李兴德在4楼提供的自然数的运算方法直接得出:
=(MOD(ROW()-1,3)+1)*10+ROUNDUP((ROW()-0)/3,)

[ 本帖最后由 lhx120824 于 2011-1-2 09:13 编辑 ]

TA的精华主题

TA的得分主题

发表于 2011-1-2 10:46 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-1-2 13:02 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
由此联想到在数组特辑班学习时胡剑老师留的魔术问题的解答:

两个相同行数的多列数组的并联:
见下图:
要把3列数组ABC与4列数组DEFG合并成7列的数组ABCDEFG,需要把第二个数组扩充成7列的数组,借助于函数MMULT(),需要构建一个辅助数组,见图的右上方,经过矩阵运算
=MMULT(H4:K9,N4:T7)
得到中间的7列的数组,然后借助 if({1,1,1,0,0,0,0},,)
=IF({1,1,1,0,0,0,0},D4:F9,MMULT(H4:K9,N4:T7))
即可实现。

辅助数组(区域N4:T7)可用以下数组公式替代:
=1*(ROW(1:4)+3=COLUMN(1:7))
公式直接变成:
=IF({1,1,1,0,0,0,0},D4:F9,MMULT(H4:K9,1*(ROW(1:4)+3=COLUMN(1:7))))
数组并联图.gif

TA的精华主题

TA的得分主题

发表于 2011-1-2 14:07 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2011-1-2 16:52 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
=(MOD(ROW()-1,3)+1)*10+ROUNDUP((ROW()-0)/3,)

TA的精华主题

TA的得分主题

发表于 2011-1-2 21:29 | 显示全部楼层
也可以用small,然后对small的第二参数进行构造
不过实用性好像不是很强
不过还是上传了
改了好几次了
=============
改最后一次了~~

[ 本帖最后由 鬼狐 于 2011-1-3 00:22 编辑 ]

数组扩展.rar

2.4 KB, 下载次数: 24

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-25 02:04 , Processed in 0.046706 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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