【发布时间】:2015-12-28 08:50:26
【问题描述】:
我正在处理大数据集,手动填写缺失的日期是一项非常繁琐的工作。我想通过应用可以帮助我填写所有这些缺失日期的 Excel 公式或 VBA 代码来自动执行此操作。
请看下面的数据。
【问题讨论】:
我正在处理大数据集,手动填写缺失的日期是一项非常繁琐的工作。我想通过应用可以帮助我填写所有这些缺失日期的 Excel 公式或 VBA 代码来自动执行此操作。
请看下面的数据。
【问题讨论】:
我会使用这个功能:
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
只需将Sheet1 和B2:B11 更改为您的实际工作表名称和单元格即可。
【讨论】:
只需要遍历日期列中的每个单元格。如果为空,则分配日期值;如果不为空,则更新 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
【讨论】:
选择列,转到Home - Find & Select - Go to Special - 选择Blanks 并点击OK。您已选择所有空白单元格。现在输入引用活动单元格上方单元格的公式(= 符号和up arrow),然后点击ctrl+enter 将其粘贴到所有选定的单元格中。
您可能想在之后复制粘贴整个列的值。
在大范围(例如超过 100000 个单元格)上,这种方法会变得很慢,所以我也推荐大表上的 VBA 解决方案。
快速基准测试:ZygD 和 D_Bester 的解决方案都在 130000 行上运行了不到 2 秒。如果我在同一组单元格上运行它们,它们之间没有可测量的速度差异。另一方面,使用 specialcells(xlcelltypeblanks) 需要 25 秒才能找到空单元格。
【讨论】: