排行
数据库百科
核心案例
行业报告
月度解读
大事记
产业图谱
中国数据库
向量数据库
时序数据库
实时数据库
搜索引擎
空间数据库
图数据库
数据仓库
大调查
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-06-29
116
【分享成果,随喜正能量】人生一世,草木一秋。世间就是这样,谁也逃不过两样东西,一是因果,二是无常!心量越大,烦恼越轻;心量越小,烦恼越重。
。
《VBA数组与字典方案》教程是我推出的第三套教程,目前已经是第一版修订了。这套教程定位于中级,
字典是VBA的精华
,我要求学员必学。七、一、三、九组合套教程掌握后,可以解决大多数工作中遇到的实际问题。
这套教程共两册,一共八十四讲,今后一段时间会给大家陆续推出修订后的教程内容。今日的内容是:
记录集赋值给数组后转置
第三十六讲 将记录集赋值给数组以及转置的利用
大家好,今日继续讲解VBA数组与字典解决方案第36讲,内容是:将记录集赋值给数组后,利用转置函数处理多维数组的方法。我在之前的讲解中,我讲了将记录集存入数组的方案,并通过一个Index函数在工作表中恢复数组数据的方法。今日讲的是利用转置函数来完成同样的功能。
1 实际问题的场景分析
实例讲解,我们有下面的工作表数据,
我要首先把上述的数据的工作表利用ADO连接打开,然后将打开的记录集数据赋值给数组,最后将数组的数据在工作表中显示出来。
2 解决问题的代码方案
为什么要讲这个方法呢?确实,我们可以在工作表中可以直接显示记录集的数据,但数组的功能强大,我们必须要掌握这个知识点的讲解。
下面看我给出的代码:
Sub MyNZsz_36() '第36讲 记录集赋值给数组后,利用转置函数处理多维数组的方法
Dim cnADO, rsADO As Object
Dim strPath, strSQL As String
Dim myData() As Variant
Dim myTitle() As Variant
Worksheets("36").Select
Cells.ClearContents
Set cnADO = CreateObject("ADODB.Connection")
Set rsADO = CreateObject("ADODB.Recordset")
strPath = ThisWorkbook.FullName
cnADO.Open "provider=Microsoft.ACE.OLEDB.12.0;extended properties='excel 12.0;hdr=yes;imex=1';" _
& "data source=" & strPath
strSQL = "SELECT * FROM [数据7$]"
rsADO.Open strSQL, cnADO, 1, 3
myTitle = Array("员工编号", "姓名", "年龄")
myData = rsADO.GetRows(-1, 1, myTitle)
Range("a1:C1") = myTitle
Range("a2").Resize(UBound(myData, 2) + 1, UBound(myData) + 1) = Application.Transpose(myData)
rsADO.Close
cnADO.Close
Set rsADO = Nothing
Set cnADO = Nothing
End Sub
代码截图:
代码讲解:
1) 上述的过程中首先打开一个用ADO连接,然后打开记录集,并将记录集赋值给数组,最后在工作表中还原数组。
2) myTitle = Array("员工编号", "姓名", "年龄")
myData = rsADO.GetRows(-1, 1, myTitle)
上述语句中在记录集中按myTitle数组的格式,讲记录集赋值给myData,要注意的是myData要是变体变量。
3) Range("a2").Resize(UBound(myData, 2) + 1, UBound(myData) + 1) = Application.Transpose(myData)
上述语句中UBound(myData, 2) 获得myData的第2维数的最大数值;UBound(myData) 获得myData的第1维数的最大数值.用Resize()函数扩展了工作表区域;Transpose(myData)将数组myData转置后填入区域。
下面看代码的执行结果:
今日内容回向:
1 如何将记录集的数据赋值给数组?
2 转置函数是如何利用的?
我20多年的VBA实践经验,全部浓缩在下面的各个教程及各类工具中:
【分享成果,随喜正能量】静心。静能生慧,智者无忧,计较是疼,比较是痛,淡然是福。定心。不以物喜,不以己悲。安心。尽人事而顺天意,随遇而安即得幸福。正心。心术不正损人害己,意志不坚诸事难成。
。
赋值语句
转置
赋值
数组
文章转载自
VBA语言専攻
,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
领墨值
有奖问卷
意见反馈
客服小墨