如何自动从Excel中的一个工作表复制数据并将其附加到另一个工作表中的现有表?

我有两张数据 第一张是导入的数据,将显示从前一天的总用户到我的网站。 第二张表是包含来自这些日常报告的所有历史数据的表格。 我想自动化一种方法,将数据从我的第一张表格(数据总是在同一个单元格中)复制到现有表格底部的新行中。 这是我有:

Sub Insert_New_Rows() Dim Lr As Integer Lr = Range("AF" & Rows.Count).End(xlUp).Row Rows(Lr + 1).Insert Shift:=xlDown Cells(Lr + 1, "AF") = Cells(Lr, "AF") + 1 Sheets("Day Before").Range("$A$12:$B$12").Copy Sheets("Historical").Cells(Lr + 1, "AF").Paste Application.CutCopyMode = False End Sub 

在这里,你会看到我的表在AF和AG列。 当我运行这个macros,它只添加一行,它不会复制和粘贴信息。

我不确定你的桌子在“一天之前”的桌子上的位置。 所以,我假设它从第1行开始。基于这个假设,这里对你的代码进行了一些修改:

 Option Explicit Sub Insert_New_Rows() Dim lngNextEmptyRow As Long Dim lngLastImportRow As Long Dim shtYstrdy As Worksheet Set shtYstrdy = ThisWorkbook.Worksheets("Day Before") With ThisWorkbook.Worksheets("Historical") lngNextEmptyRow = .Cells(.Rows.Count, "AF").End(xlUp).Row + 1 .Rows(lngNextEmptyRow).Insert Shift:=xlDown .Cells(lngNextEmptyRow, "AF").Value2 = _ .Cells(lngNextEmptyRow - 1, "AF").Value2 + 1 lngLastImportRow = shtYstrdy.Cells(shtYstrdy.Rows.Count, "A").End(xlUp).Row shtYstrdy.Range("A1:B" & lngLastImportRow).Copy _ Destination:=.Cells(lngNextEmptyRow, "AF") End With End Sub 

变化:

  1. 显式编码由@findwindowbuild议, 每个“ Range ,“ Cells ”引用之前指定工作簿和表单。
  2. 复制并粘贴一行代码(在三行代码之前)。
  3. 使用lngNextEmptyRow而不是LastRow所以可以跳过所有这些+1
  4. 确定“Day Before”表中表格的大小(最后一行),所以我们知道需要复制多less。

我希望这是你一直在寻找的答案。 如果我误解了某些东西,或者需要更多的解释,请告诉我。

没有必要激活或select范围。 最好直接使用Ranges。 你很less应该使用ActiveCell,ActiveWorkSheet或Selection。

这是如何复制和粘贴工作

这里是复制和粘贴的简写

范围(SourceRange)。复制范围(DestinationRange)

知道这将为你工作:

单元格(Rows.Count,“AF”)。结束(xlUp).Offset(1)单元格(“前一天”)。范围(“$ A $ 12:$ B $ 12”