打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
数组应用:如何优雅的调换两列内容

假如我们要实现选中的紧挨两列内容在原位置的调换,你会想到什么方法?

涉及知识点:

变量含义理解应用、Index函数学习、cells属性、数组知识。

﹥﹥方法1:借助辅助区域

VBA新手估计首先想到的就是做一个辅助区域,将需要调换的内容copy到辅助区域,再copy回来实现调换两列的目的。这的确是一个曲线救国的方法。

但是,通用性不够好。你随便放数据,万一影响其他原始数据就麻烦了。

﹥﹥方法2:利用中间变量

VBA初级选手估计会这么解决。如果对变量理解的稍微好一些,会想到先将内容赋值给一个中间变量,然后通过这个中间变量实现调换数据的功能。

先来个简单的例子,假如我们就交换A1单元格和B1单元格的内容,我们的代码要这样写。

Sub 调换A1和B1单元格()中间变量 = Range("b1")Range("b1") = Range("a1")Range("a1") = 中间变量End Sub

F8调试过程

中间变量起到一个临时存储数据的作用。

升级一下,如果要交换任意选中两列区域的交换。思路还是那个思路,只不过需要对选中区域进行逐行循环。

代码如下:

Sub 调换任意两列内容()        Dim a%, b%, c%, r% , num$        a = Selection.Row        b = Selection.Rows.Count        c = Selection.Column        With ActiveSheet            For r = a To a + b-1                num = .Cells(r, c + 1).Value                .Cells(r, c + 1).Value = .Cells(r, c).Value                .Cells(r, c).Value = num            Next        End With    End Sub

代码中这段代码,就是利用中间变量调换两列数据的过程。

num = .Cells(r, c + 1).Value.Cells(r, c + 1).Value = .Cells(r, c).Value.Cells(r, c).Value = num

接下来要放大招了,请出来我们的数组

﹥﹥方法3:利用数组

VBA中级选手就要用到神器了。其实这种问题,用数组解决最好不过,代码少,运行快。

Sub 调换两列()arr = Selectionar1 = WorksheetFunction.Index(arr, 0, 1)ar2 = WorksheetFunction.Index(arr, 0, 2)Selection.Cells(1, 1).Resize(UBound(ar2), 1) = ar2Selection.Cells(1, 2).Resize(UBound(ar1), 1) = ar1End Sub

知识点讲解

■Index函数:返回列表或数组中的元素值,此元素由行序号和列序号的索引值给定。

语法:Index(array,row_num,column_num)

如果同时使用 row_num 和 column_num,函数Index 返回 row_num 和 column_num 交叉处的单元格的数值。 
如果将 row_num 或 column_num 设置为 0,函数 Index 则分别返回整个列或行的数组数值。


在这里主要用作取出二维数组中某一列数据。所以将数组一维参数写成0。

·Index(arr, 0, 1):取出二维数组第一列内容作为一个新数组。

·Index(arr, 0, 2):取出二维数组第二列内容作为一个新数组。

Selection的cells属性

selection是已选单元格区域。对他应用cells属性,.Cells(1, 1)表示已选单元格区域的左上角第一个单元格。


﹥﹥方法4:VBA高级选手的方法

这种简单的问题,我也不知道高手们怎么解决的。有更好的方法,也希望高手在下方留言提点我。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Excel VBA 语法基础
Excel 关于VBA中数组使用变量如何实现
Vba菜鸟教程[通俗易懂]
VBA利用数组优化代码运行效率
EXCEL学习笔记之VBA
3段VBA代码,从此不再「复制-粘贴」
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服