自动填充顺序日期,直到下一行具有价值
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 列
- 点击 F5 或 Ctrl-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
我正在尝试下拉日期列以填充空白单元格中的下一个连续日期,直到下一个单元格中有一个值。例如,突出显示的日期范围内的空白单元格应显示为 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 列
- 点击 F5 或 Ctrl-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