Excel 将数据粘贴到图纸上时设置范围

Excel 将数据粘贴到图纸上时设置范围,excel,vba,Excel,Vba,我正在使用vba在两个Excel工作簿之间复制数据: 数据源(从中复制):工作簿x,“等待列表”工作表 数据目标(粘贴到):工作簿y,“所有年份数据”表 这成为了一个问题,因为在目标工作表的工作簿y中,我将数据粘贴到了目标工作表中,我添加了辅助列来帮助数据过滤。但是,现在当我从源工作表复制并粘贴数据(使用vba自动粘贴)到目标工作表时,它似乎复制了所有列(有数据或没有数据),然后这些列与我的帮助器列重叠,使整个区域留空 现在,我想将粘贴数据的范围限制在从A列到W列的位置,而不是粘贴到辅助对象

我正在使用vba在两个Excel工作簿之间复制数据:

  • 数据源(从中复制):工作簿x,“等待列表”工作表
  • 数据目标(粘贴到):工作簿y,“所有年份数据”表
这成为了一个问题,因为在目标工作表的工作簿y中,我将数据粘贴到了目标工作表中,我添加了辅助列来帮助数据过滤。但是,现在当我从源工作表复制并粘贴数据(使用vba自动粘贴)到目标工作表时,它似乎复制了所有列(有数据或没有数据),然后这些列与我的帮助器列重叠,使整个区域留空

现在,我想将粘贴数据的范围限制在从A列到W列的位置,而不是粘贴到辅助对象的X、Y和Z列以及其余所有列上

请参阅下面我的代码:-

Sub CopyToYearly2()

 Dim LastRow As Long
 Dim i As Long, j As Long
 Dim answer As Integer

answer = MsgBox("Do you intend to copy this data to the Yearly analysis sheet?", vbYesNo + vbQuestion, "Copy data to Yearly analysis sheet.")


   Set x = ThisWorkbook

   If answer = vbYes Then

   Set y = Workbooks.Open("S:\Downloads\workbook y.xlsm")


   With x.ActiveSheet 'Determine last used row on waitinglist.
      LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
   End With

   With y.Sheets("ALL Years Data")
      j = .Cells(.Rows.Count, "C").End(xlUp).Row + 1
   End With

   For i = 3 To LastRow 

       'With x.Sheets("Waiting List")
       With x.ActiveSheet 
               .Rows(i).Copy Destination:=y.Sheets("ALL Years Data").Range("A" & j)
               j = j + 1

       End With
   Next i

   'Save x and y:
x.Save
y.Save

 Else
    'do nothing

End If


End Sub


谢谢。

复制时不需要循环。一步到位。另外,不要使用
,而是限制要复制到所需列的范围:

x.Worksheets("Waiting List").Range("A3:W" & LastRow).Copy _
     Destination:=y.Worksheets("ALL Years Data").Range("A" & j)

可能会更好

Dim answer as VbMsgBoxResult

复制时不需要循环。一步到位。另外,不要使用
,而是限制要复制到所需列的范围:

x.Worksheets("Waiting List").Range("A3:W" & LastRow).Copy _
     Destination:=y.Worksheets("ALL Years Data").Range("A" & j)

可能会更好

Dim answer as VbMsgBoxResult

问题是
。行(i)。复制
。。。您希望将其限制为某些列,而不是整行,但不需要在此处使用循环进行复制。只需一步完成:问题是
。行(i)。复制
。。。您希望将其限制为某些列,而不是整行,但不需要在此处使用循环进行复制。一步到位:感谢所有这些有用的建议,BigBen。我尝试使用循环的原因是,这种数据复制会发生多次。因此,与其用新数据替换现有数据,不如将其自身添加到已有的数据中。回到家后,我将尝试实现您的代码,以查看问题是否最终得到解决。从我对您的代码的了解来看,不需要将循环附加到现有数据中。好的,继续测试,它将复制到正确的范围内,而不会与我的帮助器列重叠:-谢谢。现在唯一的问题是它还复制了整个列行,包括那些没有数据的行。我需要它复制并通过到最后一个使用过的行,该行中包含数据~谢谢您是否保留决定最后一行的行?如果您有表格,请参阅。谢谢所有这些有用的建议,BigBen。我尝试使用循环的原因是,这种数据复制会发生多次。因此,与其用新数据替换现有数据,不如将其自身添加到已有的数据中。回到家后,我将尝试实现您的代码,以查看问题是否最终得到解决。从我对您的代码的了解来看,不需要将循环附加到现有数据中。好的,继续测试,它将复制到正确的范围内,而不会与我的帮助器列重叠:-谢谢。现在唯一的问题是它还复制了整个列行,包括那些没有数据的行。我需要它复制并通过到最后一个使用过的行,该行中包含数据~谢谢您是否保留了决定
LastRow
的行?如果您有表格,请参阅。