返回列表 上一主題 發帖

[發問] EXCEL 對1900年以前的日期,如何相加減

[發問] EXCEL 對1900年以前的日期,如何相加減

本帖最後由 dou10801 於 2023-5-4 16:21 編輯

請教各位先進,EXCEL 對1900年以前的日期,如何相加減.
[例]:  1850/5/20-1850/5/15=5
杜小平

用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

本帖最後由 Andy2483 於 2023-5-5 08:05 編輯

回復 1# dou10801


    謝謝前輩發表此主題
後學學習方案如下,請前輩參考

執行結果:


Sub TEST_20230505_1()
MsgBox CDate("1850/5/20") - CDate("1850/5/15")
End Sub

Sub TEST_20230505_2()
Dim D1 As Date, D2 As Date
D1 = "1850/5/20": D2 = "1850/5/15"
MsgBox D1 - D2
End Sub

Sub TEST_20230505_3()
MsgBox CDate("1850/5/15") + 5
End Sub

Sub TEST_20230505_4()
MsgBox CDate("1850/5/20") - 5
End Sub
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復 3# Andy2483 如附件,敬請前輩指導,謝謝.

相減天數.rar (7.57 KB)

杜小平

TOP

回復 4# dou10801


    謝謝前輩回復
後學藉此帖練習陣列與公曆日期的檢測,學習方案如下,請前輩參考

執行前:


檢測出非公曆日:


修正日期後執行結果:



Option Explicit
Sub TEST()
Dim Brr, Crr, i&, N&, Ds As Date, Dn As Date
Brr = Range([A2], Cells(Rows.Count, "A").End(3))
ReDim Crr(1 To UBound(Brr), 1 To 2)
For i = 1 To UBound(Brr)
   If Not IsDate(Brr(i, 1)) Then Crr(i, 1) = "←非公曆日": N = N + 1
Next
'↑先設迴圈檢測日期是否為正確公曆日期
If N > 0 Then [B2].Resize(UBound(Crr), 2) = Crr: MsgBox "資料錯誤! 請修正後再執行!": Exit Sub
'↑如果有錯必須先修正錯誤,再重新執行
For i = 1 To UBound(Brr) - 1
   Crr(i, 1) = Brr(i + 1, 1) & "-" & Brr(i, 1)
   Ds = Brr(i + 1, 1): Dn = Brr(i, 1): Crr(i, 2) = Ds - Dn
   '↑由於變數宣告,會自動將字串轉換為日期
Next
[B2].Resize(UBound(Crr), 2) = Crr
Erase Brr, Crr
End Sub
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

        靜思自在 : 【時間無法遮擋】怕時間消逝,花了許多心血,想盡各式方法要遮擋時間,結果是:浪費了更多時間,且一無所成!
返回列表 上一主題