当前位置:首页 > 技术分析 > 正文内容

数组的转置

ruisui881个月前 (05-18)技术分析25

【分享成果,随喜正能量】越是运气不好,越要沉住气,默默振作,静静熬过去,你要接受,那些突如其来的失去,当你做什么都于事无补的时候,唯一能做的就是努力让自己好过一点。

再能干的人,也会撑不住;再执着的心,也会被伤透。一个人累了,就有权力休息,一颗心痛了,就有理由放下。不必逞强,泪水是最好的释放,不必伪装,回归是最美的模样。

《VBA信息获取与处理》教程是我推出第六套教程,目前已经是第一版修订了。这套教程定位于最高级,是学完初级,中级后的教程。这部教程给大家讲解的内容有:跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互联网数据抓取、VBA延时操作,剪贴板应用、Split函数扩展、工作表信息与其他应用交互,FSO对象的利用、工作表及文件夹信息的获取、图形信息的获取以及定制工作表信息函数等等内容。程序文件通过32位和64位两种OFFICE系统测试。是非常抽象的,更具研究的价值。

教程共两册,八十四讲。今日的内容是专题四“EXCEL工作表数据的读取、回填和查找”的第4讲:数组的转置

第四节 将VBA数组写入工作表时转置(Transpose)的利用

转置(Transpose)是数组应用中经常用到的知识点,在使用Excel表格的过程中,当我们想将横行转成竖列(或将纵向的数据切换成横向排列),又希望这前后两个排列方式不一样的数据相互关联的时候就可以利用转置函数transpose了。但要注意这个函数是工作表函数,所以利用这个函数的时候必须用Application.Transpose(Arr)。

1 一维数组回填工作表时的转置(Transpose)

如果需要一维数组按列的回填可以用下面的语句:MyRange.Value = Application.Transpose(Arr)

具体代码如下:

Sub MYNZG() '一维数组数据的转置回填方案

Dim Arr As Variant

Dim MyRange As Range

Sheets("SHEET4").Select

Arr = Array("大象", "老虎", "狮子", "狐狸")

Set MyRange = Range("A1")

Set MyRange = MyRange.Resize(UBound(Arr) + 1, 1)

MyRange.ClearContents

MyRange.Value = Application.Transpose(Arr)

MsgBox "ok!"

End Sub

代码截图:

代码讲解:这里需要注意的是基准单元格区域的扩展语句变为:Resize(UBound(Arr) + 1, 1)这是列的扩展了,所以转置语句相应就是Application.Transpose(Arr) 。这里要注意点是调整大小的参数是反向的。

2 二维数组回填工作表时的转置(Transpose)

如果需要二维数组按列的回填可以用下面的语句:MyRange.Value = Application.Transpose(Arr)

具体代码如下:

Sub MYNZH() '二维数组数据的转置回填方案

Dim Arr As Variant

Dim MyRange As Range

Sheets("SHEET4").Select

Arr = Sheets("SHEET2").Range("A1:b9")

Set MyRange = Range("A1")

Set MyRange = MyRange.Resize(UBound(Arr, 2), UBound(Arr, 1))

MyRange.ClearContents

MyRange.Value = Application.Transpose(Arr)

MsgBox "ok!"

End Sub

代码截图如下:

代码讲解:从工作表读取数组变量时,VBA将自动调整数组的大小,以保持工作表上的范围,所以不必关心数组的大小。但是,将数组从VBA写入工作表时,必须调整目标区域的大小以容纳数组。我们在前面的例子中已经看到了这一点。

如果传递给工作表的数组小于其写入的范围,则未使用的单元格将出现“#N/A”错误。如果传递的数组大于其写入的范围,则将在右侧或底部截断该数组以适合该范围。

本节知识点回向:如何理解转置?一维数组和二维数组转置是如何利用的?

本专题参考程序文件:004工作表.XLSM

我20多年的VBA实践经验,全部浓缩在下面的各个教程中,教程学习顺序:

① 7→1→3→2→6→5或者7→4→3→2→6→5。

② 7→8

各套教程内容简介:

第7套教程(共三册):《VBA之EXCEL应用》:是对VBA基本的讲解

第1套教程(共三册):《VBA代码解决方案》是入门后的提高教程

第4套教程(16G):VBA代码解决方案之视频(第一套的视频讲解)

第3套教程(共两册):《VBA数组与字典解决方案》:是对数组和字典的专题讲解

第2套教程(共两册):《VBA数据库解决方案》:是对数据库的专题讲解

第6套教程(共两册):《VBA信息获取与处理》:讲解VBA的网络及跨程序应用

第5套教程(共两册):VBA中类的解读和利用:类及接口技术的讲解

第8套教程(共三册):VBA之Word应用(最新教程):word中VBA的利用

  • 第六套教程:VBA信息获取与处理,是一部高级教程,涉及范围更广,实用性更强,面向中高级人员。教程共二十个专题,包括:跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互联网数据抓取、VBA延时操作,剪切板应用、Split函数扩展、工作表信息与其他应用交互,FSO对象的利用、工作表及文件夹信息的获取、图形信息的获取以及定制工作表信息函数等等内容。程序文件通过32位和64位两种OFFICE系统测试。

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/4156.html

标签: 截取数组
分享给朋友:

“数组的转置” 的相关文章

Gitlab概览

Gitlab是开源的基于Git的仓库管理系统,也可以管理软件开发的整个生命周期,是项目管理和代码托管平台,支撑着整个DevOps的生命周期。Gitlab很容易选为GitHub,作为公司私有库管理的工具。我们可以用Gitlab Workflow来协同整个团队的软件开发管理过程。软件开发阶段Gitlab...

K8s里我的容器到底用了多少内存?

作者:frostchen导语 Linux下开发者习惯在物理机或者虚拟机环境下使用top和free等命令查看机器和进程的内存使用量,近年来越来越多的应用服务完成了微服务容器化改造,过去查看、监控和定位内存使用量的方法似乎时常不太奏效。如果你的应用程序刚刚迁移到K8s中,经常被诸如以下问题所困扰:容器的...

7 招教你轻松搭建以图搜图系统

作者 | 小龙责编 | 胡巍巍当您听到“以图搜图”时,是否首先想到了百度、Google 等搜索引擎的以图搜图功能呢?事实上,您完全可以搭建一个属于自己的以图搜图系统:自己建立图片库;自己选择一张图片到库中进行搜索,并得到与其相似的若干图片。Milvus 作为一款针对海量特征向量的相似性检索引擎,旨在...

一次Java内存占用高的排查案例,解释了我对内存问题的所有疑问

问题现象7月25号,我们一服务的内存占用较高,约13G,容器总内存16G,占用约85%,触发了内存报警(阈值85%),而我们是按容器内存60%(9.6G)的比例配置的JVM堆内存。看了下其它服务,同样的堆内存配置,它们内存占用约70%~79%,此服务比其它服务内存占用稍大。那为什么此服务内存占用稍大...

摄影后期必看 | PS插件camera raw 16.4教程 | 范围蒙版

范围蒙版Camera Raw 【蒙版】模块中提供了三个范围蒙版工具,可以通过特定的范围来创建蒙版。此次新增的【范围蒙版】大大加强了acr插件对局部调整的能力。点击下拉小箭头可以看到【颜色范围】,可用于快速选择想要编辑的颜色。快捷键:Shift + C【明亮度范围】,可用于快速选择想要调整的明亮度。快...

JavaScript数组操作:掌握常用方法,提升开发效率

JavaScript数组操作:从增删改查到高级应用本文深入解析JavaScript中常用的数组方法,包括push、unshift、pop、shift、map、filter、reverse、at 和 slice。通过详细的例子和应用场景,帮助开发者快速掌握这些方法,提升代码效率和可读性。开篇点题作为J...