【问题标题】:Excel VBA - How to compare today's date in one column with a future date in a second columnExcel VBA - 如何将一列中的今天日期与第二列中的未来日期进行比较
【发布时间】:2013-07-24 02:49:18
【问题描述】:

我的工作簿中有两列;第一个有今天的日期,第二个有未来的日期。我想创建一个 VBA 来比较这两列并验证未来日期是否比今天提前 三个工作日。如果日期不是比今天早三个工作日,我想显示一条警告消息。

有没有办法做到这一点?非常感谢。

【问题讨论】:

标签: excel vba date


【解决方案1】:

首先,您需要了解 VBA 如何“理解”日期。

Excel、Access、VBA 和许多 MS 产品将日期存储为双精度数字;数字的整数部分是日期(从 1900 年 1 月 1 日开始计算的天数),数字的小数部分是时间(天的小数部分)。

这使得比较两个日期变得容易:您可以像使用数字一样比较、添加或减去日期。所以,如果t0t1 是两个日期(t1 >= t0),那么表达式t1 - t0 将给出日期的差异。

现在...如何计算两个日期之间的“工作日”? VBA 中的format() 函数可以帮助您。您可以使用此函数返回“星期几”数字。 查看函数的在线帮助:http://msdn.microsoft.com/en-us/library/office/gg251755.aspx

那么……你是怎么把这些放在一起的?这是一个例子:

public function bizDaysRemaining(t0 as date, t1 as date) as String
    Dim ans As String, dayCount as Integer, n as Integer
    If t1 < t0 Then
        ans = "Warning"
    Else
        dayCount = 0
        n = 0
        While t0 + n <= t1
            if format(t0 + n, "w", vbMonday) <= 5 Then dayCount = dayCount + 1
            n = n + 1
        Wend
        If dayCount < 3 Then
            ans = "Warning"
        Else
            ans = "There are " & dayCount & " business days remaining"
        End If
    End IF
    bizDaysRemaining = ans
End Function

希望对你有帮助

【讨论】:

  • 非常感谢。我会先尝试解决我的问题并发布我想出的东西,但我是一个初学者,不知道从哪里开始。然而,我不是在电子表格中生成一个单元格,而是在寻找一些不同的东西。我想运行一个宏来测试每一行的日期是否比今天提前 3 个工作日,如果它们与提前 3 个工作日不同,则会显示一条警告消息。我将如何操作此代码以作为宏运行以执行此测试?再次感谢。
  • @user2611396 首先:如果您喜欢它,请点赞和/或接受它;)。第二:此功能不依赖于单元格(或任何其他 Excel 特定的东西)来工作,因此您可以在任何您喜欢的地方使用它。您可以编写一个宏来读取数据,并且可以在您的宏内部 使用此函数。我建议你寻找一个好的在线 VBA 教程或参考,或者一本关于 Excel 和 VBA 编程的好书(那里有很多书)。
【解决方案2】:

另外,不需要使用 VBA。 Excel 将让您将日期视为数学对象,并且日期周围还有多个公式函数。

查看 NETWORKDAYS() 函数。

http://office.microsoft.com/en-us/excel-help/networkdays-HP005209190.aspx

【讨论】:

  • 哇!甚至不知道这个功能存在! +1
【解决方案3】:

试试这个:

假设 A1 = 第一个日期

A2 = 第二个日期

Sub xtremeexcel()

x = Cells(1, 2) - Cells(1, 1)

If x > 3 Then

  If Weekday(Cells(1, 1)) <= 2 Then

   MsgBox ("Success")

  Else

    If x > 5 Then

        MsgBox ("Success")

    Else

        MsgBox ("fail")

    End If

  End If

Else

    MsgBox ("fail")

End If


End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-27
    • 1970-01-01
    • 1970-01-01
    • 2020-04-13
    • 2014-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多