Excel VBA - 如何将一列中的今天日期与第二列中的未来日期进行比较



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

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

首先,您需要了解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

希望这能帮助您

此外,不需要使用VBA。Excel允许您将日期视为数学对象,并且有多个关于日期的公式函数。

查看NETWORKDAYS()函数。

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

试试这个:

假设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