Excel复制粘贴隔行不连续单元格

  • 内容
  • 评论
  • 相关

在excel日常使用时,您是否经常在复制时遇到"不能对多重选定区域使用此命令"而导致无法复制的情况?这个非常令人苦恼,因为经常是辛辛苦苦按着Ctrl键挨个选择了单元格准备复制,一旦无法复制还得重新一个一个的选择一遍。本例教你快速、永久性解决这个问题。

操作过程:

一、先来说一下这个提示产生的原因:

1)用鼠标选择了非矩形区域;

2)虽然最终选区整体是矩形区域,但是每个选取不同。比如说先选中A1,点Ctrl再选择B1,然后用鼠标选择A2:B2,这样的区域也是复制不了的;

3)选择了正确的要复制区域,但是手一抖,多选择了一个单元格,如下图:

  1. 首先,按照下图所示方法在"个人宏工作簿"中录制一个空宏。

三、按Alt+F11打开VBA界面,并将下述代码更新在"个人宏工作簿"的模块中。

Sub 多区域复制粘贴()

    On Error Resume Next

    Dim SRange() As Range, UPRange As Range, TRange As Range

    Dim i As Long, AreaNum As Long

    Dim MinR As Long, MinC As Long

    AreaNum = Selection.Areas.Count

    ReDim SRange(1 To AreaNum)

    MinR = ActiveSheet.Rows.Count

    MinC = ActiveSheet.Columns.Count

    For i = 1 To AreaNum

        Set SRange(i) = Selection.Areas(i)

        If SRange(i).Row < MinR Then MinR = SRange(i).Row

        If SRange(i).Column < MinC Then MinC = SRange(i).Column

    Next i

    Set UPRange = Cells(SRange(1).Row, SRange(1).Column)

    Set TRange = Application.InputBox(prompt:="选择粘贴区域的最左上角单元格", Title:="多区域复制粘贴", Type:=8)

    Application.ScreenUpdating = False

    For i = 1 To AreaNum

        SRange(i).Copy

        TRange.Offset(SRange(i).Row - MinR, SRange(i).Column - MinC).PasteSpecial paste:=xlPasteValues

    Next i

    Application.ScreenUpdating = True

End Sub

四、返回Excel工作表界面,我们利用自定义快速访问工具栏的方法将该宏绑定在快速访问工具栏,这样以后可以直接点击调用。

五、操作完毕后,工具栏上将出现一个新的按钮。这样,基础工作就已经做好了。下面我们来测试一下具体功能。

  1. 用鼠标选择任意单元格区域(次序不论,按住Ctrl怎么选择都可以),如下图黄色单元格所示:

  1. 点击快速访问工具栏上刚刚插入的按钮,弹出如下提示:

  1. 我们只需要选择任意一个空单元格(想要粘贴区域的最左上角单元格),这时原选中区域的内容就按照原来的格式保持相对位置不变粘贴到了新的单元格区域。

  1. 上述方法优点:

1)任意选中区域可以原样粘贴到其他单元格;

2)可以完成将筛选状态单元格粘贴到同样筛选状态的表格中;

3)在要粘贴的区域只要数据不和选中区域冲突,不影响被粘贴区域其他单元格。这样可以实现修改部分数据后进行"更新"原始区域的功能。也就是只更新变动过的单元格内容,同时不影响被粘贴区域的字体格式、边框等。

注意:

利用宏功能实现的操作无法撤销,因为其中包含了非常多的不可见操作,所以务必在用熟之前保存备份好文档。

评论

0条评论

发表评论

电子邮件地址不会被公开。