我有两张数据。第一张工作表是导入的数据,用于显示前一天我的网站的总用户数。第二张表是包含来自这些日报的所有历史数据的表。我想自动一种方法将数据从我的第一张表(数据将始终在同一单元格中)复制到现有表格底部的新行。这就是我所拥有的:
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列中。当我运行这个宏时,它只添加一行,它不会复制和粘贴信息。
答案 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
的变化:
Range
,Cells
,参考。lngNextEmptyRow
代替LastRow
,因此可以跳过所有这些+1
。我希望这是您一直在寻找的答案。如果我误解了某些内容或者有什么需要更多解释,请告诉我。
答案 1 :(得分:0)
无需激活或选择范围。最好直接与Ranges合作。您很少使用ActiveCell,ActiveWorkSheet或Selection。
以下是复制和粘贴的简写
范围(SourceRange).Copy范围(DestinationRange)
知道这对你有用:
表格(“前一天”)。范围(“$ A $ 12:$ B $ 12”)。复制表(“历史”)。单元格(Rows.Count,“AF”)。结束(xlUp)。偏移( 1)