【问题标题】:Using a Loop to count number of days between TODAY() and date in a cell in VBA使用循环计算 VBA 中单元格中 TODAY() 和日期之间的天数
【发布时间】:2018-09-23 23:55:41
【问题描述】:

VBA 新手,但需要帮助。我有以下代码,我试图将其转换为一个循环,以提供今天日期与 A 列中找到的日期之间的天数。行数可以根据输入的数据进行更改,并希望它在单元格中停止时停止A 栏为空白。我也只希望出现值。任何帮助是极大的赞赏。下面的工作非常适合第一行。我相信循环应该出现在第 2 行,但不知道如何去做。提前谢谢你。

Range(ActiveSheet.Range("E2"), ActiveSheet.Range("E2").End(xlDown).Select
ActiveCell.FormulaR1C1 = "=SUM(TODAY()-OFFSET(R2C1,0,0,COUNTA(c[-4]),1))"
ActiveCell.Value = ActiveCell.Value

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    你不需要循环。这将确定Column A 中使用的范围,并在Column E 下的相同使用范围中应用公式(但仅粘贴值)

    另外,请注意您不需要使用.Select.Active.Selection。这里。直接限定您的范围,您将在路上为自己省去麻烦。出于学习目的,最好表现得像那些行不存在:)


    Sub DateDif()
    
    Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Sheet1")
    Dim LRow As Long: LRow = ws.Range("A" & ws.Rows.Count).End(xlUp).Row
    
    With ws.Range("E2:E" & LRow)
        .Formula = "=NOW() - A2"
        .Value = .Value 'If you want the formula to remain, remove this line
    End With
    
    End Sub
    

    【讨论】:

    • 我注意到如果 E2 为空白,它将作为标题列的单元格 E1 更改为数字。该代码将在该人打开文档或移动到另一个功能正常的选项卡时运行。我不明白为什么代码正在查看 E1。如果工作表为空白,也不想显示任何值。怎么调整?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-08
    • 2012-01-29
    • 2021-09-18
    • 1970-01-01
    • 2013-11-29
    • 1970-01-01
    • 2023-01-19
    相关资源
    最近更新 更多