排行
数据库百科
核心案例
行业报告
月度解读
大事记
产业图谱
中国数据库
向量数据库
时序数据库
实时数据库
搜索引擎
空间数据库
图数据库
数据仓库
大调查
2021年报告
2022年报告
年度数据库
2020年openGauss
2021年TiDB
2022年PolarDB
2023年OceanBase
首页
资讯
活动
大会
学习
课程中心
推荐优质内容、热门课程
学习路径
预设学习计划、达成学习目标
知识图谱
综合了解技术体系知识点
课程库
快速筛选、搜索相关课程
视频学习
专业视频分享技术知识
电子文档
快速搜索阅览技术文档
文档
问答
服务
智能助手小墨
关于数据库相关的问题,您都可以问我
数据库巡检平台
脚本采集百余项,在线智能分析总结
SQLRUN
在线数据库即时SQL运行平台
数据库实训平台
实操环境、开箱即用、一键连接
数据库管理服务
汇聚顶级数据库专家,具备多数据库运维能力
数据库百科
核心案例
行业报告
月度解读
大事记
产业图谱
我的订单
登录后可立即获得以下权益
免费培训课程
收藏优质文章
疑难问题解答
下载专业文档
签到免费抽奖
提升成长等级
立即登录
登录
注册
登录
注册
首页
资讯
活动
大会
课程
文档
排行
问答
我的订单
首页
专家团队
智能助手
在线工具
SQLRUN
在线数据库即时SQL运行平台
数据库在线实训平台
实操环境、开箱即用、一键连接
AWR分析
上传AWR报告,查看分析结果
SQL格式化
快速格式化绝大多数SQL语句
SQL审核
审核编写规范,提升执行效率
PLSQL解密
解密超4000字符的PL/SQL语句
OraC函数
查询Oracle C 函数的详细描述
智能助手小墨
关于数据库相关的问题,您都可以问我
精选案例
新闻资讯
云市场
登录后可立即获得以下权益
免费培训课程
收藏优质文章
疑难问题解答
下载专业文档
签到免费抽奖
提升成长等级
立即登录
登录
注册
登录
注册
首页
专家团队
智能助手
精选案例
新闻资讯
云市场
微信扫码
复制链接
新浪微博
分享数说
采集到收藏夹
分享到数说
首页
/
数组的拆分
数组的拆分
VBA语言専攻
2022-01-25
101
【分享成果,随喜正能量】事情没有做成之前,不要告诉任何人。世界不是善意的,收起你的天真。自己明确知道没有意义的事情,就不要去做,真正学会自控。毅力和自控力是很可怕的东西,因为99%的人根本不具备这种品质,拥有它你就比大多数人都要强。
《VBA数组与字典方案》教程是我推出的第三套教程,目前已经是第一版修订了。这套教程定位于中级,
字典是VBA的精华
,我要求学员必学。七、三、一套教程掌握后,可以解决大多数工作中遇到的实际问题。
这套教程共两册,八十四讲,今后一段时间会给大家陆续推出修订后的教程内容。今日的内容是第32讲:数组的拆分
第三十二讲 数组的拆分和维数转换
大家好,我们今日继续VBA数组与字典解决方案的讲解,今日讲解第32讲,数组的拆分和维数转换:
1 数组的拆分
1) 用Index拆分数组
数组的拆分在VBA中是一个难题,如果是按行拆分数组,除了用循环外也只能借用API函数完成了。幸好我们可以借用工作表函数index达到按列拆分数组。
语法: INDEX(array,row_num,column_num)
参数:
① Array 为单元格区域或数组常量。
② 如果数组只包含一行或一列,则相对应的参数 row_num 或 column_num 为可选。如果数组有多行和多列,但只使用 row_num 或 column_num,函数 INDEX 返回数组中的整行或整列,且返回值也为数组。
③ Row_num 数组中某行的行序号,函数从该行返回数值。如果省略 row_num,则必须有Column_num。
④ Column_num 数组中某列的列序号,函数从该列返回数值。如果省略 column_num,则必须有 row_num。
特别说明:
①如果同时使用 row_num 和 column_num,函数 INDEX 返回 row_num 和 column_num 交叉处的单元格的数值。
②如果将 row_num 或 column_num 设置为 0,函数 INDEX 则分别返回整个列或行的数组数值。Row_num 和 column_num 必须指向 array 中的某一单元格;否则,函数 INDEX 返回错误值 #REF!。
例:=INDEX(A2:B3,2,2) 返回单元格区域的第二行和第二列交叉处的值
=INDEX(A2:B3,2,1) 返回单元格区域的第二行和第一列交叉处的值
2) 用Index函数取出任意一列的数组
我们可以任意拆分出一列构成新的数组。方法是:Application.Index(数组, , 列数) 。
Sheets("32").Select
'数组的拆分
arr1 = Range("A1:C10") '把单元格区域A1:B4的值装入数组arr1
arr2 = Application.Index(arr1, , 2) '把数组第2列拆分出来装入新数组arr2中,新数组为二维数组
MsgBox arr2(2, 1) '取出新数组第2行的值
2 数组维数的转换
Transpose转置数组在工作表中可以把行列转换。在VBA中同样也可以做到转换的效果。
1)一维转二维
。
'数组维数的转换
arr3 = Array(10, 350, "aq", 40, 103, "bw")
arr4 = Application.Transpose(arr3)
MsgBox arr4(2, 1) '转换后的数组是1列多行的二维数组2、二维数组转一维。
2)两维转一维
注:在转置时,当只有1列N行的数组才能直接转置成一维数组
'数组维数的转换2维转1维
arr1 = Range("A1:C10") '把单元格区域A1:B4的值装入数组arr1
arr5 = Application.Transpose(Application.Index(arr1, , 2)) '取得arr1第2列数据并转置成1维数组
MsgBox arr5(2)
3 数组的拆分和维数的转换代码示例
今日代码实例:
Sub MyNZsz_32() '第32讲 数组的拆分和维数的转换
Sheets("32").Select
'数组的拆分
arr1 = Range("A1:C10") '把单元格区域A1:B4的值装入数组arr1
arr2 = Application.Index(arr1, , 2) '把数组第2列拆分出来装入新数组arr2中,新数组为二维数组
MsgBox arr2(2, 1) '取出新数组第2行的值
'数组维数的转换
arr3 = Array(10, 350, "aq", 40, 103, "bw")
arr4 = Application.Transpose(arr3)
MsgBox arr4(2, 1) '转换后的数组是1列多行的二维数组
'数组维数的转换2维转1维
arr1 = Range("A1:C10") '把单元格区域A1:B4的值装入数组arr1
arr5 = Application.Transpose(Application.Index(arr1, , 2)) '取得arr1第2列数据并转置成1维数组
MsgBox arr5(2)
arr6 = Range("A1:C1")
MsgBox Join(Application.Transpose(Application.Transpose(arr6)), "-")
End Sub
代码截图:
看我们的工作表:
上述代码共要弹出4个对话框:
分别是什么呢?我们看实测:
今日内容回向;
1 如何拆分数组?
2 如何使数组维数发生转换?
3 arr6 = Range("A1:C1")
MsgBox Join(Application.Transpose(Application.Transpose(arr6)), "-")
上述代码中 为什么要进行两次转置?
我20多年的VBA实践经验,全部浓缩在下面的各个教程中:
【分享成果,随喜正能量】用一颗平常心去面对这个纷繁的世界,经历的故事都会送远,困扰过的烦恼终会成云烟,活来活去,相伴的只是流年。
拆分单元格
num
矩阵
单元格
数组
文章转载自
VBA语言専攻
,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
领墨值
有奖问卷
意见反馈
客服小墨