创建具有最大条目数的自动转换时间序列

时间:2018-01-23 11:33:58

标签: excel vba excel-vba

我使用以下代码从Excel工作表(Sheet1)中提取值,并每分钟将它们保存到Sheet2中,每分钟自动创建一个新行。

Sub Auto_Open()

Call CopyValues

End Sub

Sub CopyValues()
Dim RowNo As Long
RowNo = Sheets(4).Cells(Rows.Count, 4).End(xlUp).Row + 1

    Sheets(4).Cells(RowNo, 2) = Sheets(1).Cells(14, 2)
    Sheets(4).Cells(RowNo, 3) = Sheets(1).Cells(14, 3)
    Sheets(4).Cells(RowNo, 4) = Sheets(1).Cells(14, 4)
    Sheets(4).Cells(RowNo, 5) = Sheets(1).Cells(15, 2)
    Sheets(4).Cells(RowNo, 6) = Sheets(1).Cells(15, 3)
    Sheets(4).Cells(RowNo, 7) = Sheets(1).Cells(15, 4)
    Sheets(4).Cells(RowNo, 8) = Sheets(1).Cells(16, 2)
    Sheets(4).Cells(RowNo, 9) = Sheets(1).Cells(16, 3)
    Sheets(4).Cells(RowNo, 10) = Sheets(1).Cells(16, 4)
    Sheets(4).Cells(RowNo, 11) = Sheets(1).Cells(17, 2)

Application.OnTime Now + TimeValue("00:01:00"), "CopyValues"

End Sub

我无法弄清楚如何执行以下操作:24小时过后我有24x60 = 1440行数据,对于后来的每一分钟,我都要删除第一行将数据下方的所有数据向上移动一行(例如,第2行返回到现在为空的行1,第3行进入第2行,直到第1440行)。我还想在最后一行提供新数据。这样,工作表上最多只有1440行数据。

有谁知道我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

maxhob17的答案似乎有效。

我只是在上面代码中的Application.OnTime之前添加了以下代码:

If RowNo > 1440 Then
    Rows("2:2").Delete Shift:=xlUp
End If

为了澄清,我删除了第二行而不是第一行,因为我的标题位于第一行。