我在工作簿中有兩列;第一個有今天的日期,第二個有未來的日期。我想創建一個比較這兩列的VBA,並驗證未來的日期是今天之前的三個工作日。如果日期不是今天的三個工作日,我想顯示一條警告消息。Excel VBA - 如何比較一列中的今天日期和第二列中的未來日期
有沒有辦法做到這一點?非常感謝。
我在工作簿中有兩列;第一個有今天的日期,第二個有未來的日期。我想創建一個比較這兩列的VBA,並驗證未來的日期是今天之前的三個工作日。如果日期不是今天的三個工作日,我想顯示一條警告消息。Excel VBA - 如何比較一列中的今天日期和第二列中的未來日期
有沒有辦法做到這一點?非常感謝。
首先,您需要了解VBA如何「理解」日期。
Excel,Access,VBA和許多MS產品將日期存儲爲雙精度數字;數字的整數部分是日期(自1900年1月1日起計算的天數),數字的小數部分是時間(小數部分)。
這可以很容易地比較兩個日期:您可以比較,添加或減去日期,就像使用數字一樣。所以,如果t0
和t1
是兩個日期(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
@ user2611396第一:如果你喜歡它,請上它和/或接受它;)。第二:這個功能不依賴於單元格(或任何其他Excel特定的東西)的工作,所以你可以在任何你喜歡的地方使用它。你可以編寫一個宏來讀取數據,並且你可以在你的宏中使用這個函數*。我建議你找一本好的在線VBA教程或參考資料,或者一本關於Excel和VBA編程的好書(這裏有很多書)。 – Barranka
而且,使用VBA不是必需的。 Excel會讓你把日期當成數學對象,日期也有多個公式函數。
看看NETWORKDAYS()函數。
http://office.microsoft.com/en-us/excel-help/networkdays-HP005209190.aspx
哇!甚至不知道這個功能存在! +1 – Barranka
試試這個:
假設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
http://stackoverflow.com/q/10583970 –
你應該嘗試首先解決您的問題併發布您的編碼嘗試。 – Barranka
http://msdn.microsoft.com/en-us/library/office/ff835532.aspx – SeanC