如何复制一系列单元格并将值粘贴到两个不同的工作表?

我有一个Sheet2的数据范围,将其链接到Sheet1(Sheet1被格式化并通过Sheet2链接使用=if(Sheet2$x$x="","",Sheet2$x$x) ;这样,任何数据放入Sheet2的范围C13:G62显示在Sheet1范围C13:G62中,代码的开始部分用于只将指定范围内的数据移动到BATCH文件Sheet3,并find最后一行粘贴来自Sheet1的值,而不复制公式,它是这样做的,所以我可以删除Sheet2上的数据来擦除Sheet1干净,但仍然有一个Sheet3上的所有备份数据。

无论如何,当我试图操作代码将Sheet1(到DUPLICATE SHEET1)上的所有内容复制到工作簿结尾处的另一个工作表时,问题在于:

  Sheets(Sheet1).Copy After:=Sheets(Sheets.Count) ActiveSheet.Name = _ InputBox("Name of the New WorkSheet") 

这让我可以命名这张很棒的纸张。 但是,通过创build多个代码变体,不会将RANGE中的DATA移动到新创build的Sheet4(没有数据)。 在代码的一次迭代中,我能够让Sheet1复制并在工作簿的末尾制作Sheet4,但没有范围内的数据,但将光标放在单元格C13中,这是粘贴值的起始点,当我左键单击该单元格中的鼠标来“粘贴值”,它会粘贴我试图粘贴的值。 但是,无论哪种方式我重新排列的代码,数据将始终被复制,但不会粘贴到Sheet4范围。

在这里,我已经发布了代码中的一个变体,它仍然不会将数值粘贴到SHEET4(新创build的表格),但仍然复制到BATCH FILE中。 我在这里错过了什么?

 Dim s1Sheet As Worksheet Dim s2Sheet As Worksheet Dim source As String Dim target As String Dim rngSource As Range Dim rngTargetStart As Range source = "Invoice" target = "TOTAL_INVOICE" Application.EnableCancelKey = xlDisabled Set s1Sheet = Sheets(source) Set s2Sheet = Sheets(target) Set rngSource = s1Sheet.Range("C13:G62") Set rngTargetStart = s2Sheet.Range("C" & Rows.Count).End(xlUp).Offset(1) 'Set rngTargetFinish = ws1.Range("C" & Rows.Count).End(xlUp).Offset(1) rngTargetStart.Resize(rngSource.Rows.Count, rngSource.Columns.Count).Value = rngSource.Value 'rngTargetFinish.Resize(rngSource.Rows.Count, rngSource.Columns.Count).Value = rngSource.Value 'Set target = Sheets("Sheet4").Range("B13:G63") copy_non_formulas source:=rngSource, target:=rngTargetStart ' copy_non_formulas source:=Range("B13:G63"), target:=Range("B70:G109") Unhighlight ' copy_non_formulas source:=Range("B13:G63"), target:=Range("B13:G63") Unhighlight '===Copies Sheet to End of WorkBook & Pastes Values====== Sheets(source).Copy After:=Sheets(Sheets.Count) ActiveSheet.Name = _ InputBox("Name of the New WorkSheet") Range("C13:G62").ClearContents Dim rng As Range Set rng = ActiveSheet.Range("C13:G62") rng.ClearContents Dim s3Sheet As Worksheet Dim rngTargetStart2 As Range Set s3Sheet = Sheets(Sheets.Count) Set rngTargetStart2 = s3Sheet.Range("C" & Rows.Count).End(xlUp).Offset(1) rngTargetStart2.Resize(rngSource.Rows.Count, rngSource.Columns.Count).Value = rngSource.Value copy_non_formulas2 source:=rngSource, target2:=rngTargetStart2 copy_non_formulas2 source:=Range("C13:G62"), target2:=Range("C13:G62") 

这是一个综合的公共小组

 copy_non_formulas(source As Range, target As Range) Dim i As Long Dim j As Long Dim c As Range For i = 1 To source.Rows.Count For j = 1 To source.Columns.Count Set c = source(RowIndex:=i, ColumnIndex:=j) If Left(c.Formula, 1) <> "=" Then target(RowIndex:=i, ColumnIndex:=j).Value = c.Value End If Next j Next i 

另一个公共小组为二次行动

 copy_non_formulas2(source As Range, target2 As Range) Dim x As Long Dim y As Long Dim d As Range For x = 1 To source.Rows.Count For y = 1 To source.Columns.Count Set d = source(RowIndex:=x, ColumnIndex:=y) If Left(d.Formula, 1) <> "=" Then target2(RowIndex:=x, ColumnIndex:=y).Value = d.Value End If Next y Next x