前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >VBA小技巧09:从非连续的单元格区域将值复制到指定单元格区域

VBA小技巧09:从非连续的单元格区域将值复制到指定单元格区域

作者头像
fanjy
发布2021-07-30 09:57:59
3.1K0
发布2021-07-30 09:57:59
举报
文章被收录于专栏:完美Excel

本文将给出一段VBA代码,从非连续的单元格区域复制值并粘贴到另外指定的单元格区域。

如下图1所示,将右侧两个单元格区域的数据复制到左侧的两个单元格区域中。

图1

下图2是粘贴数据后的结果。

图2

如果我们直接同时复制右侧两个区域中的数据,由于Excel不允许对多重选择区域执行复制操作,会弹出如下图3所示的提示信息。

图3

看来并不如想像的那样简单!但是,我们可以使用VBA来完成。

首先定义数据区域名称和要复制到的区域的名称。

如下图4所示,将单元格区域H2:K4和G7:J9定义名称为“copyrng”。

图4

同样,将单元格区域C2:F4和B7:E9定义名称为“pasterng”,如下图5所示。

图5

按Alt+F11组合键,打开VBE,插入一个标准模块,输入下面的代码:

代码语言:javascript
复制
Sub CopyRange()
    Dim i As Integer
    Dim j As Integer
    Dim strAddress As String
   strAddress = Range("pasterng").Address
    i =Len(strAddress) - Len(Application.WorksheetFunction.Substitute(strAddress,":", ""))
    For j = 1 To i
       Range("pasterng").Areas(j).Value =Range("copyrng").Areas(j).Value
    Next
End Sub

代码中,Range("pasterng").Address返回代表引用的单元格区域地址的字符串,多个区域中间使用“,”隔开,而其中“:”号的个数就是引用的单元格区域数,所以代码:

Len(strAddress) -Len(Application.WorksheetFunction.Substitute(strAddress, ":",""))

得到非连续区域的个数。

由于每个区域都属于Areas集合,使用一个循环遍历各个区域并执行复制粘贴操作。

运行CopyRange过程,即可实现上图2所示的效果。

undefined

注:本文学习整理自www.sumproduct.com,供有兴趣的朋友参考。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-07-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 完美Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档