【问题标题】:VBA To subtract today's date from a date in another column and return a numberVBA从另一列中的日期中减去今天的日期并返回一个数字
【发布时间】:2017-07-30 05:34:28
【问题描述】:

希望你能帮上忙。我在下面有一小段代码。我遇到的问题是我试图从 C 列中的日期中减去今天的日期(参见图 1),然后在 D 列中返回一个数字结果,然后在 D 列中继续这个公式,直到列中没有任何值C 减去。

所以今天的日期是 09/03/2017 我想从 C2 03/07/2017 中的日期中减去这个日期,在 D2 中给我 2,然后通过 D 列继续,直到 C 有一个空白单元格。

被窃听的代码是Range("D2").Formula = DateDiff(C2, Date, "d")

我得到的错误是运行时错误 13 类型不匹配。

它所属的较大的一段代码是

Public Sub Activate_Sheet()



Worksheets("In Progress").Activate
Columns.AutoFit
Range("N:N").EntireColumn.Delete
Range("D1").Value = "# days open"
Range("D2").Formula = DateDiff(C2, Date, "d")

End Sub

非常感谢任何和所有帮助。

图一

【问题讨论】:

    标签: vba excel date subtraction


    【解决方案1】:

    DateDiff函数参数:

    • Interval 在您的情况下,“d”(代表天数)是第一个参数,而不是第三个参数。

    您不能在DateDiff 函数中使用C2,但您需要使用Range("C2").Value 从该单元格中获取值。

    另外,DateDiff 会以天为单位返回数值结果,因此您需要将其输入 Range("D2").Value 而不是 Formula

    将您的代码修改为:

    Range("D2").Value = DateDiff("d", Range("C2").Value , Date)
    

    编辑 1:为 C 列中所有占用的单元格运行此代码:

    Dim LastRow  As Long, i As Long
    With Worksheets("In Progress")
        LastRow = .Cells(.Rows.Count, "C").End(xlUp).Row
    
        For i = 2 To LastRow
            .Range("D" & i).Value = DateDiff("d", .Range("C" & i).Value, Date)
        Next i
    End With
    

    【讨论】:

    • 请注意。值(天数)将基于您执行此宏的日期。如果您希望值(天数)代表当前日期,则无论何时打开文件,请使用 Peh 的答案。
    • 您好,所有参与此答案的人,感谢大家的帮助。非常感谢。我选择了Range("D2").Value = DateDiff("d", Range("C2").Value , Date),因为我需要该值在那天保持不变。谢谢谢拉多。我现在可以问我如何才能让这个一直计算到 D 列吗?谁能给点建议?
    • 谢拉多。非常感谢您的帮助,这是一部美丽的作品。都柏林非常尊重。希望你有美好的一天;希望你今天过得很开心。 :-) 谢谢。
    【解决方案2】:

    代替

    Range("D2").Formula = DateDiff(C2, Date, "d")
    

    使用

    Range("D2").Formula = "=DAYS(TODAY(),C7)"
    

    .Formula 必须是一个公式,因为您将其写入单元格(适用于英文 Excel 版本)。如果您有非英语(本地化)Excel 版本,则可以使用.FormulaLocal 以您的本地化语言编写公式。

    【讨论】:

    • 请注意。此公式将不断更新,因此如果您明天打开文件,值(天数)会有所不同。如果您希望保持相同的值,请使用 Shai Rado 的答案。
    • @TheKing 你是完全正确的 2 个答案没有相同的结果。这是我的意图,因为 D 列被命名为 # days open,他尝试使用 .formula,所以我高度假设他希望该列显示问题从今天开始开放的天数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-20
    • 1970-01-01
    • 2019-03-19
    • 2019-11-29
    • 2016-07-03
    • 1970-01-01
    相关资源
    最近更新 更多