多个连续日期

时间:2013-07-17 18:24:20

标签: excel vba excel-vba

我正在创建一个宏,它在一个月内输入每个日期的十个实例。我已经把它带到了日期的地方,但它们都只是在前十个单元格中相互粘贴。

我需要什么(但是十个,而不是三个):

3/1/2013
3/1/2013
3/1/2013
3/2/2013
3/2/2013
3/2/2013
3/3/2013
3/3/2013
3/3/2013

我的代码:

Sub Macro1()

Dim v&, MyDate As Date, Cell As Range

For i = DateValue("3/01/2013") To DateValue("3/31/2013")
    Set Cell = [A1]
    For v = 0 To 9 ' 9 means 10 cells
        Cell.Offset(v, 0).Value = i
    Next v
Next i

End Sub

我需要在代码中使用什么建议吗?

4 个答案:

答案 0 :(得分:1)

无需循环。

Sub test()
    Range("A1") = #3/1/2013#
    Range("A1:A10").DataSeries
End Sub

评论后更新

Sub test()

    Range("A1") = #3/1/2013#

    For i = 1 To 31
        lastRow = Range("A" & Rows.Count).End(xlUp).Row + 1
        If i = 1 Then
            Range("A1:A" & i * 10) = DateAdd("d", i - 1, #3/1/2013#)
        Else
            Range("A" & lastRow & ":A" & i * 10) = DateAdd("d", i - 1, #3/1/2013#)
        End If
    Next

End Sub

答案 1 :(得分:1)

您的Set Cell = [A1]位于外部For圈内。

答案 2 :(得分:1)

Sub Macro1()
    Dim v&, MyDate As Date, Cell As Range

    Range("A1").Select
    Set Cell = [A1]

    For i = DateValue("3/01/2013") To DateValue("3/31/2013")
        For v = 0 To 9
            ActiveCell.Value = i
            ActiveCell.Offset(1, 0).Select
        Next v
    Next i
End Sub  

虽然1/3/13和31/3/13对我来说效果更好。

答案 3 :(得分:1)

这已经得到了解答,但仅仅因为它有点不同:

    Range("A1:A310").Formula = "=DATE(2013,3,1)+INT(ROW()/10.01)"
    Range("A1:A310").Copy
    Range("A1").PasteSpecial xlPasteValues
    Application.CutCopyMode = False

甚至可以一步完成(感谢我的同事汉斯的一些帮助):

Range("A1:A310").Value = Evaluate("=INDEX(DATE(2013,3,1)+INT(ROW(A1:A310)/10.01),0)")