堆叠时间序列

时间:2012-11-06 23:25:53

标签: vba

1/2012 36.5
2/2012 37.1
3/2012 37.5
4/2012 37.9
5/2012 38.0 
6/2012 38.1
7/2012 38.3

我有一个时间序列(日期为第一列,值为第二列)。我试图从顶部选择系列的前5个值,将其复制并粘贴到excel文件中的第二个工作表中,然后返回到第一个工作表,获取该系列的下五个值,转到下一个工作表并将5个值作为下一列。所以我试图在下一张纸上将5个系列并排堆叠。我怎么做?

到目前为止,我一直在同一页面尝试这个过程,这是我到目前为止的地方。

Range(ActiveCell, ActiveCell.Offset(5, 0)).Copy
ActiveCell.Offset(0, 5).PasteSpecial
ActiveCell.End(xlDown).Select
ActiveCell.Offset(1, 0).Select
ActiveCell.End(xlToLeft).Select
Range(ActiveCell, ActiveCell.Offset(5, 0)).Copy
ActiveCell.Offset(0, 5).PasteSpecial

任何帮助将不胜感激。我再次尝试将这些系列并排堆叠5个长度。谢谢!

1 个答案:

答案 0 :(得分:0)

Sub TT()

Const BLOCK_SIZE As Long = 5
Dim rng As Range, rngDest As Range

    Set rng = ActiveCell.Resize(BLOCK_SIZE, 1)
    Set rngDest = ActiveSheet.Parent.Sheets(2).Range("A1")

    Do While Application.WorksheetFunction.CountA(rng) > 0
        rngDest.Resize(BLOCK_SIZE, 1).Value = rng.Value
        Set rng = rng.Offset(BLOCK_SIZE, 0)
        Set rngDest = rngDest.Offset(0, 1)
    Loop

End Sub