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

时间:2016-06-15 22:49:43

标签: excel vba excel-vba macros

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

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列中。当我运行这个宏时,它只添加一行,它不会复制和粘贴信息。

2 个答案:

答案 0 :(得分:0)

我不确定你的桌子在桌子上的起始位置"前一天"。所以,我假设它从第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. @findwindow建议明确编码,说明工作簿和之前 RangeCells,参考。
  2. 复制并粘贴一行代码(在三行代码之前)。
  3. 使用lngNextEmptyRow代替LastRow,因此可以跳过所有这些+1
  4. 确定表格上的表格的大小(最后一行)" Day Before",以便我们知道需要复制多少。
  5. 我希望这是您一直在寻找的答案。如果我误解了某些内容或者有什么需要更多解释,请告诉我。

答案 1 :(得分:0)

无需激活或选择范围。最好直接与Ranges合作。您很少使用ActiveCell,ActiveWorkSheet或Selection。

这是复制和粘贴的工作方式

以下是复制和粘贴的简写

  

范围(SourceRange).Copy范围(DestinationRange)

知道这对你有用:

  

表格(“前一天”)。范围(“$ A $ 12:$ B $ 12”)。复制表(“历史”)。单元格(Rows.Count,“AF”)。结束(xlUp)。偏移( 1)