Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 填写缺失的日期_Vba_Excel_Date - Fatal编程技术网

Vba 填写缺失的日期

Vba 填写缺失的日期,vba,excel,date,Vba,Excel,Date,我正在处理大数据集,手动填充缺失的日期是一项非常乏味的工作。我想通过应用Excel公式或VBA代码来自动完成这项工作,这些代码可以帮助我填充所有这些缺失的日期 请看下面的数据 第一个表是我得到的输入,我想要第二个表作为我的输出。黄色单元格显示缺少的日期,这些日期应与其前一行相同。只需循环查看日期列中的每个单元格即可。如果为空,则指定日期值;如果不为空,则更新LastDate变量 Sub FillInDates() Dim rg As Range Dim aCell As Ran

我正在处理大数据集,手动填充缺失的日期是一项非常乏味的工作。我想通过应用Excel公式或VBA代码来自动完成这项工作,这些代码可以帮助我填充所有这些缺失的日期

请看下面的数据


第一个表是我得到的输入,我想要第二个表作为我的输出。黄色单元格显示缺少的日期,这些日期应与其前一行相同。

只需循环查看日期列中的每个单元格即可。如果为空,则指定日期值;如果不为空,则更新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秒就可以找到空单元格