在Excel中选择适当的范围

时间:2015-03-09 20:48:00

标签: excel vba excel-vba

我正在将数据从一个工作簿复制到另一个工作簿。我一直在与Range挣扎,无法弄清楚我应该如何插入数据。

            Workbook A                                 Workbook B
         ID           Name                         Id            Name
         1A                                        3C            Sarah
         2A                                        4J            Joy
         5D                                        R8            Lucas

结果

             (Expected)                                Reality
         ID           Name                         Id            Name
         1A                                        1A            Sarah
         2A                                        2A            Joy
         5D                                        5D            Lucas
         3C           Sarah                        3C
         4J           Joy                          4J
         R8           Lucas                        R8


  Sub CopyOttiCoverage()

Dim x As Workbook
Dim y As Workbook
Dim rng As Range
Dim LastRow As Long
Dim NextRow As Long

Set x = Workbooks.Open("H\A.xlsm")
Set y = ThisWorkbook 'Workbooks.Open("H:\B.xlsx")

x.Worksheets("Sheet1").Activate
Range("A65536").Select
ActiveCell.End(xlUp).Select
LastRow = ActiveCell.Row
Range("A2:A" & LastRow).Copy y.Worksheets("Sheet1").Range("a65536").End(xlUp).Offset(1, 0)
Range("B2:B" & LastRow).Copy y.Worksheets("Sheet1").Range("b65536").End(xlUp).Offset(1, 0)
Application.CutCopyMode = False

如上所示,当我将记录从B复制到A时,其中A在名称字段中包含所有空白,结果将名称放在错误的位置。所以我认为它与我粘贴的范围有关。此外,如果有人可以告诉我是否可以在ID列之前插入日期列并使用系统日期更新它。提前谢谢。

1 个答案:

答案 0 :(得分:1)

将底部粘贴行更改为:

Range("B2:B" & LastRow).Copy y.Worksheets("Sheet1").Range("a65536").End(xlUp).Offset(1, 1)

并将其置于另一条线之上。所以它看起来像这样:

Sub CopyOttiCoverage()

Dim x As Workbook
Dim y As Workbook
Dim rng As Range
Dim LastRow As Long
Dim NextRow As Long

Set x = Workbooks.Open("H\A.xlsm")
Set y = ThisWorkbook 'Workbooks.Open("H:\B.xlsx")

x.Worksheets("Sheet1").Activate
Range("A65536").Select
ActiveCell.End(xlUp).Select
LastRow = ActiveCell.Row
Range("B2:B" & LastRow).Copy y.Worksheets("Sheet1").Range("a65536").End(xlUp).Offset(1, 1)
Range("A2:A" & LastRow).Copy y.Worksheets("Sheet1").Range("a65536").End(xlUp).Offset(1, 0)
    Application.CutCopyMode = False

这可能不是最好的方法,但它应该有效。

编辑:此外,您可以通过以下方式立即复制整个范围:

Range("A2:B" & LastRow).Copy y.Worksheets("Sheet1").Range("a65536").End(xlUp).Offset(1,0)

然后,如果将“B”更改为“C,D,X”,则可以获得一大堆连接列。