代码之家  ›  专栏  ›  技术社区  ›  Clément Hurel

如何为两个日期之间的所有日期每行指定一个日期?

  •  1
  • Clément Hurel  · 技术社区  · 6 年前

    我知道这个问题看起来很复杂,但我想做的很简单,我有两列:

    • 我是我的开始日期
    • L是我的结束日期
    • G是所有日期的位置

    我想做的是获得每个周期的天数(EndDate-StartDate+1),添加这么多行,并将G的值更改为每天写入的天数。

    我已经对下面的部分进行了编码,但似乎不对:

    Sub Dates()
    Dim LastRow As Long
    Dim addrows
    Dim FindDates
    Dim CountDays
    Dim dddays
    Dim ws As Worksheet
    Dim ws2 As Worksheet
    Dim i As Long
    Dim ir As Long
    Set ws = Sheets("Sheet1")
    Set ws2 = Sheets("Sheet2")
    
    With Sheets("Sheet1")
        LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row - 1
    End With
    addrows = 2
    
    For ir = 1 To LastRow
        FindDates = ws.Range("I" & addrows).Value
        CountDays = ws.Range("L" & addrows).Value - ws.Range("I" & addrows).Value + 1
        Adddays = 0
    
        For i = 1 To CountDays
            ws2.Rows("2:2").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
            ws2.Range("A2").Value = Sheets("Sheet1").Range("A" & addrows).Value
            ws2.Range("C2").Value = FindDates + Adddays
            ws2.Range("C2").Value = ws.Range("G" & addrows).Value
            Adddays = Adddays + 1
        Next i
            addrows = addrows + 1
    
    Next ir
    
    End Sub
    

    文件如下所示: enter image description here

    你能帮我一点忙吗?“ws2.Range(“C2”).Value=FindDates+Adddays”给我一个错误13

    1 回复  |  直到 6 年前
        1
  •  0
  •   DisplayName    6 年前
    • 我是我的开始日期
    • L是我的结束日期
    • G是所有日期的位置

    我想做的是获得每个周期的天数(EndDate-StartDate+1),添加这么多行,并将G的值更改为每天写入的天数。

    对于以上内容,这将帮助您:

    Sub Dates()
        Dim ir As Long, countDays As Long
    
        With Sheets("Sheet1")
            For ir = .Cells(.Rows.Count, "I").End(xlUp).row To 2 Step -1
                With .Rows(ir)
                    countDays = .range("L1") - .range("I1") + 1
                    If countDays > 1 Then
                        .Offset(1).Resize(countDays - 1).Insert xlDown
                        .Offset(1).Resize(countDays - 1).value = .value
                        With .Resize(countDays).Columns("G")
                            .FormulaR1C1 = "=RC9+ROW()-" & .Rows(1).row
                            .value = .value
                        End With
                    End If                        
                End With
            Next
        End With
    End Sub