自动填充顺序日期,直到下一行具有价值

Auto Fill Sequential Dates Until Next Row Down has Value

我正在尝试下拉日期列以填充空白单元格中的下一个连续日期,直到下一个单元格中有一个值。例如,突出显示的日期范围内的空白单元格应显示为 3/23/2019 和 3/24/2019(参见屏幕截图,C 列):

这是我粗略拼凑的代码。但是我对此很陌生,我不确定我哪里出错了。在我的逻辑中,我执行从 Range C2:

开始的代码
Sub fillInDates()

Dim cellEndRange As Range
Dim cellStartRange As Range


Selection.End(xlDown).Select

ActiveCell.Offset(RowOffset:=-1, ColumnOffset:=0).Activate

cellEndRange = ActiveCell

Selection.End(xlUp).Select

cellStartRange = ActiveCell

cellStartRange.AutoFill Destination:=cellStartRange & cellEndRange

这可以在没有 VBA 代码的情况下完成。

  • select C 列
  • 点击 F5Ctrl-G 打开“转到”对话框
  • 点击特别
  • 勾选空白并点击确定
  • 现在所有空白单元格都已 selected。在不更改 selection 的情况下,键入一个 = 字符
  • 点击向上箭头引用当前单元格上方的单元格
  • 键入 +1 将上面单元格中的日期加一天
  • 按住 Ctrl 键并按 Enter

现在该公式位于所有以前空白的单元格中。您可以使用 copy/Paste 值将公式替换为其计算出的值。

试试看,你可以使用下面的方法。

Sub test()
    Dim Ws As Worksheet
    Dim vDB As Variant
    Dim rngDB As Range
    Dim myDate As Date
    Dim i As Long
    
    Set Ws = ActiveSheet
    
    With Ws
        Set rngDB = .Range("c2", .Range("c" & Rows.Count).End(xlUp))
    End With
    vDB = rngDB
    For i = 1 To UBound(vDB, 1)
        If vDB(i, 1) = "" Then
            myDate = myDate + 1
            vDB(i, 1) = myDate
        Else
            myDate = vDB(i, 1)
        End If
    Next i
    rngDB = vDB
End Sub