VBA代码,用于将天数从一列添加到另一列

VBA代码,用于将天数从一列添加到另一列,vba,excel,Vba,Excel,Excel中有以下列:文档日期所有单元格都有值&初始处置日期列中有空格 每个文档日期单元格对应一个初始处置日期单元格 对于任何空白的初始处置日期单元格,我希望将其设置为从相应文档日期算起的7天。严格空白单元格 例如:文件日期=2018年1月10日。预期初始处置日期=2018年8月10日 是否有执行此类操作的代码?顺便说一下,我有大约55000行和51列 多谢各位!非常感谢您的任何建议或想法 如果您的文档日期在A列,而您的初始处置日期在B列,则以下内容将达到您的预期结果: Sub foo() Di

Excel中有以下列:文档日期所有单元格都有值&初始处置日期列中有空格

每个文档日期单元格对应一个初始处置日期单元格

对于任何空白的初始处置日期单元格,我希望将其设置为从相应文档日期算起的7天。严格空白单元格

例如:文件日期=2018年1月10日。预期初始处置日期=2018年8月10日

是否有执行此类操作的代码?顺便说一下,我有大约55000行和51列


多谢各位!非常感谢您的任何建议或想法

如果您的文档日期在A列,而您的初始处置日期在B列,则以下内容将达到您的预期结果:

Sub foo()
Dim ws As Worksheet: Set ws = Sheets("Sheet1")
'declare and set the worksheet you are working with, amend as required
Lastrow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
'get the last row with data on Column A

For i = 2 To Lastrow
'loop from row 2 to the last row with data
    If ws.Cells(i, "B").Value = "" Then
    'if there is no value in Column B then
        ws.Cells(i, "B").Value = ws.Cells(i, "A").Value + 7
        'add seven days to the date from Column A
    End If
Next i
End Sub

在这种情况下,在一个范围内循环要快一点。我假设您的数据在表1中,您的文件日期在A列,您的初始证词在B列

最后,您需要确定7天是否包括周末。我给你们留下了一个解决方案。您需要删除循环中间的一个操作语句

Option Explicit

Sub BetterCallSaul()

Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Sheet1")
Dim LRow As Long, iRange As Range, iCell As Range

LRow = ws.Range("A" & ws.Rows.Count).End(xlUp).Row
Set iRange = ws.Range("B2:B" & LRow)

Application.ScreenUpdating = False
    For Each iCell In iRange
        If iCell = "" Then
            iCell = iCell.Offset(, -1) + 7 'Includes Weekends
            iCell = WorksheetFunction.WorkDay(iCell.Offset(, -1), 7) 'Excludes Weekends
        End If
    Next iCell
Application.ScreenUpdating = True

End Sub

所有空格上的公式将避免在工作表列中循环出现延迟

Sub ddPlus7()

    Dim dd As Long, didd As Long

    With Worksheets("sheet1")
        'no error control on the next two lines so those header labels better be there
        dd = Application.Match("Document Date", .Rows(1), 0)
        didd = Application.Match("Desired Initial Disposition Date", .Rows(1), 0)

        On Error Resume Next
        With Intersect(.Columns(dd).SpecialCells(xlCellTypeConstants, xlNumbers).EntireRow, _
                       .Columns(didd).SpecialCells(xlCellTypeBlanks).EntireRow, _
                       .Columns(didd))
            .FormulaR1C1 = "=rc[" & dd - didd & "]+7"
        End With
        On Error GoTo 0

    End With

End Sub

欢迎来到SO请阅读此处以创建一个帮助人们回答您的问题,并回顾以下内容。祝你好运。@garfbradaz,如果你在评论中键入速记[mcve],你会得到。[请求],[帮助]和其他一些人也是如此。e、 吉普:哇,我不知道-谢谢!在初始处置日期列中,put=[文档日期]+7?我还建议更改子名称;