2013-07-23 17 views
-4

我在工作簿中有兩列;第一個有今天的日期,第二個有未來的日期。我想創建一個比較這兩列的VBA,並驗證未來的日期是今天之前的三個工作日。如果日期不是今天的三個工作日,我想顯示一條警告消息。Excel VBA - 如何比較一列中的今天日期和第二列中的未來日期

有沒有辦法做到這一點?非常感謝。

+0

http://stackoverflow.com/q/10583970 –

+0

你應該嘗試首先解決您的問題併發布您的編碼嘗試。 – Barranka

+0

http://msdn.microsoft.com/en-us/library/office/ff835532.aspx – SeanC

回答

2

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

希望這有助於你

+0

非常感謝。我會試着先解決我的問題,併發布我想出來的東西,但我非常喜歡初學者,不知道從哪裏開始。然而,我不是在電子表格中創建一個單元格,而是在尋找一些與衆不同的東西。我想運行一個宏來測試每一行的日期是否比今天提前3個工作日,如果它們與未來3個工作日不同,則會顯示一條警告消息。我如何操作這個代碼作爲宏運行來執行這個測試?再次感謝。 – user2611396

+0

@ user2611396第一:如果你喜歡它,請上它和/或接受它;)。第二:這個功能不依賴於單元格(或任何其他Excel特定的東西)的工作,所以你可以在任何你喜歡的地方使用它。你可以編寫一個宏來讀取數據,並且你可以在你的宏中使用這個函數*。我建議你找一本好的在線VBA教程或參考資料,或者一本關於Excel和VBA編程的好書(這裏有很多書)。 – Barranka

0

試試這個:

假設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 
相關問題