使用宏从一个工作表复制多个范围,并将它们粘贴到第一个空行中的另一个工作表中

时间:2016-10-25 19:48:39

标签: excel vba excel-vba

我必须复制数百个2700行x 3列范围,然后将它们粘贴到第一个空行中的另一个工作表中(因此从工作表“CPR Test 2013-2015”复制的第一个范围将粘贴到第1行在“地图”工作表上,第二个范围将粘贴到“地图”中的第2701行,第三个范围将粘贴到“地图”中的第5402行等。如果有必要知道我为什么这样做,我在底部包含了解释。如果没有,我会在这里继续解决问题:&/ p>

需要复制的每个范围与下一个范围分开6列。因此,例如,第一个范围是(XG2:XI2700),六列之后我们有第二个范围(XP2:XR2700),最后一个范围是(BHP2:BHR2700)。*

*注意:XG是第631列,XI是第633列; XP是列640,XR是列642;必和必拓是第1576栏,BHR是第1578栏。

将范围粘贴到工作表“Maps”中时,能够将它们粘贴到第一个空行中会很好,因为范围中的行数将来会有所不同。如果无法做到这一点,那么每隔2700行将范围粘贴到“地图”中就可以了。

First range to be copied

Pasting the first range in "Maps"

以下是我在VBA编辑器中尝试过的一些代码(忍受我,我是初学者):

Sub CPR_to_Calculator()
'
' CPR_to_Calculator Macro
'

'
Application.ScreenUpdating = False
Sheets("CPR Test 2013-2015").Select
    For ColNum = 631 To 1578 Step 7
        Sheets("CPR Test 2013-2015").Select
        Range(Cells(2, ColNum), Cells(2700, ColNum + 2)).Select
        Range(Selection, Selection.End(xlDown)).Select
        Selection.Copy
        Sheets("Maps").Select
        Selection.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial     xlPasteValues
            Application.CutCopyMode = False
            Application.ScreenUpdating = True
    Next ColNum

End Sub

为什么我这样做:我正在使用“CPR 2013-2015”表中的数据计算“地图”表中学生和大学之间的距离。已经设置了“地图”工作表,只需按一下按钮即可计算邮政编码之间的距离。

“CPR Test 2013-2015”中每个范围的三列是ID,学生邮政编码和学校邮政编码。我需要在“地图”表中计算学生邮政编码和学校邮政编码之间的距离。由于每个范围都属于特定的大学,数据集中有数百所大学,我不想一次计算一所大学的学生和学校邮政编码之间的距离。我宁愿复制所有大学的范围,并将它们粘贴到彼此叠加的“地图”表格中。这样,我只需点击“地图”中的计算按钮,它就会计算每行中邮政编码之间的距离。然后,我可以在“CPR Test 2013-2015”中使用INDEX MATCH公式来提取每个唯一ID的距离数据。

1 个答案:

答案 0 :(得分:0)

除非你想保留形式;最好直接分配值。

Sub CPR_to_Calculator()
    Dim y As Long

    With Worksheets("CPR Test 2013-2015")
        For y = 631 To 1582 Step 9

           Worksheets("Maps").Range("A" & Rows.Count).End(xlUp).Offset(1).Resize(2699, 3).Value = .Cells(2, y).Resize(2699, 3).Value

        Next
    End With

End Sub