Vba 填写缺失的日期
我正在处理大数据集,手动填充缺失的日期是一项非常乏味的工作。我想通过应用Excel公式或VBA代码来自动完成这项工作,这些代码可以帮助我填充所有这些缺失的日期 请看下面的数据Vba 填写缺失的日期,vba,excel,date,Vba,Excel,Date,我正在处理大数据集,手动填充缺失的日期是一项非常乏味的工作。我想通过应用Excel公式或VBA代码来自动完成这项工作,这些代码可以帮助我填充所有这些缺失的日期 请看下面的数据 第一个表是我得到的输入,我想要第二个表作为我的输出。黄色单元格显示缺少的日期,这些日期应与其前一行相同。只需循环查看日期列中的每个单元格即可。如果为空,则指定日期值;如果不为空,则更新LastDate变量 Sub FillInDates() Dim rg As Range Dim aCell As Ran
第一个表是我得到的输入,我想要第二个表作为我的输出。黄色单元格显示缺少的日期,这些日期应与其前一行相同。只需循环查看日期列中的每个单元格即可。如果为空,则指定日期值;如果不为空,则更新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
只需要循环遍历date列中的每个单元格。如果为空,则指定日期值;如果不为空,则更新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
我会使用这个函数:
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
。我将使用此功能:
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
。如果您不想使用VBA,可以选择:
选择列,转到主页查找并选择-转到特殊-选择空白并点击确定。您选择了所有空白单元格。现在输入一个引用活动单元格上方单元格的公式(=
符号和向上箭头
),然后点击ctrl+enter
,将其粘贴到所有选定单元格中
之后,您可能希望将粘贴值复制到整个列中
在大范围(例如超过100000个单元格)上,此方法速度较慢,因此我也建议在大表上使用VBA解决方案
一个快速基准:ZygD和D_Bester的解决方案在130000行上运行了不到2秒。如果我在同一组电池上运行它们,它们之间没有可测量的速度差。另一方面,使用特殊单元格(xlcelltypeblanks)只需25秒即可找到空单元格。如果不想使用VBA,另一种选择是:
选择列,转到主页查找并选择-转到特殊-选择空白并点击确定。您选择了所有空白单元格。现在输入一个引用活动单元格上方单元格的公式(=
符号和向上箭头
),然后点击ctrl+enter
,将其粘贴到所有选定单元格中
之后,您可能希望将粘贴值复制到整个列中
在大范围(例如超过100000个单元格)上,此方法速度较慢,因此我也建议在大表上使用VBA解决方案
一个快速基准:ZygD和D_Bester的解决方案在130000行上运行了不到2秒。如果我在同一组电池上运行它们,它们之间没有可测量的速度差。另一方面,使用specialcells(xlcelltypeblanks)只需25秒就可以找到空单元格