填写缺少的日期

时间:2015-12-28 08:50:26

标签: excel vba excel-vba date

我正在处理大数据集并手动填写缺少的日期是非常繁琐的工作。我想通过应用Excel公式或VBA代码来自动执行此操作,这可以帮助我填写所有这些缺失的日期。

请查看以下数据。

input-output missing dates 第一个表是我得到的输入,我希望第二个表作为我的输出。黄色单元格显示缺少的日期,应与上一行相同。

3 个答案:

答案 0 :(得分:1)

只需循环遍历日期列中的每个单元格。如果空白则指定日期值;如果不为空,则更新LastDate变量。

Sub FillInDates()
    Dim rg As Range
    Dim aCell As Range
    Dim LastDate As Date

    'set this to your date column
    Set rg = ActiveSheet.UsedRange.Columns(1).Offset(1, 0)

    For Each aCell In rg.Cells
        If IsEmpty(aCell) Then
            aCell.Value = LastDate
        Else
            LastDate = aCell.Value
        End If
    Next
End Sub

答案 1 :(得分:1)

我使用此功能:

Sub Fill_In_Missing_Dates()
    Dim rng As Range
    Dim cell As Range
    Set rng = ThisWorkbook.Sheets("Sheet1").Range("B2:B11")
    For Each cell In rng
        If cell.Value = vbNullString Then cell.Value = cell.Offset(-1).Value
    Next
End Sub

只需使用您的实际工作表名称和单元格更改Sheet1B2:B11

答案 2 :(得分:1)

如果您不想使用VBA,则另一种选择:

选择列,转到Home - Find & Select - Go to Special - 选择Blanks并点击OK。您已选择所有空白单元格。现在输入引用活动单元格上方的单元格的公式(=符号和up arrow),然后点击ctrl+enter将其粘贴到所有选定的单元格中。

您可能希望之后复制粘贴整个列。

在大范围内(例如超过100000个单元格),这种方法变得很慢,所以我也建议在大桌子上使用VBA解决方案。

快速基准:ZygD和D_Bester的解决方案在130000行上运行不到2秒。如果我在同一组单元上运行它们,它们之间没有可测量的速度差异。另一方面,使用specialcells(xlcelltypeblanks)需要25秒才能找到空单元格。