总是听到或看到有人问,编程好学吗?如何入门?多久能学会?它能做些什么?怎么写代码呀?执行过程中出问题了谁能帮帮我...如果你也有类似的问题那就赶快关注我的公众号,一起学起来吧!
在数据整合或同步、使用标准模板生成报表等场合,经常会将几片数据区域换来换去。手动交换数据通常需要“复制-粘贴-再复制-再粘贴”的多步操作,不仅繁琐还容易出错数
那就使用VBA来完成吧,简单几行代码,还能兼顾灵活性与易用性
执行代码前,利用Ctrl键手动选择想要交换数据的两片区域,并要求两片区域大小必须一致:两个待交换区域拥有相同的行数和列数
想要实现以上效果,其实非常简单,仅仅几行代码就能实现
2.1 操作步骤
- 选择 “插入” -> “模块”,将文中代码复制粘贴到新模块中
- 回到Excel工作表中,选择一块数据区域,然后按住Ctrl键再选择一块同样大小的数据区域(行、列一致)
- 通过“开发工具”“宏”,选择宏名“SwapSelectedRanges”运行后即可交换
操作简单易上手,行动起来吧
2.2 代码实现
代码参考:
Sub SwapSelectedRanges() Dim rng As Range Dim tempData As Variant ' 获取当前选中的区域 Set rng = Selection ' 判断是否满足条件 If rng.Areas.Count <> 2 Or rng.Areas(1).Rows.Count <> rng.Areas(2).Rows.Count Or rng.Areas(1).Columns.Count <> rng.Areas(2).Columns.Count Then MsgBox "请选择两个大小完全相同的区域!" Exit Sub End If ' 交换过程 tempData = rng.Areas(1).Cells.Value rng.Areas(1).Cells.Value = rng.Areas(2).Cells.Value rng.Areas(2).Cells.Value = tempDataEnd Sub
代码详细说明:
第6行代码:获取在Excel界面中选中的两块区域,并将其引用赋值给变量rng。Selection是一个非常重要的只读属性,它返回当前活动窗口中所有被选中对象的引用(如区域、图形等)
第9行代码:用于验证用户的选择是否符合交换的前提条件(即2个区域、行数相同、列数也相同),否则终止宏。一个Range对象可能由多个子区域组成,这些子区域被称为“Areas”,例如本案例中选取的就是两个“Areas”
第15~17行代码是核心步骤,使用了“三变量交换法”,它是计算机编程中交换两个变量值的标准算法,具体做法:
第15行代码:将第一个区域中所有单元格的值读取出来,存储到一个名为tempData的变量中。这个变量充当了交换过程中的临时缓冲区
第16行代码:将第二个区域的值整体赋值给第一个区域。此时,第一个区域原有的值已被tempData保存,所以被安全覆盖
第17行代码:将临时变量tempData中保存的(原第一个区域的值)数据给第二个区域。至此,两个区域的数据完成交换
好了,今天的编程知识到此结束了,又到周五了,今天不分享小知识了,讨论个话题吧
最近备受关注的词语“脑机接口”,如果有一天这项技术实现了科幻片里的“知识下载”功能,几秒钟就能让人学会一门语言或是专业级技能,大家会怎么想?记得在评论区留言哈
本公众号一直在不间断地分享免费的编程案例和实用技巧。无论您是用来提升自动化办公效率还是想提升自我,请关注我的公众号,解锁更多的编程知识