Board logo

標題: [發問] 直式日期+星期公式之疑惑... [打印本頁]

作者: cypd    時間: 2023-5-4 01:16     標題: 直式日期+星期公式之疑惑...

直式日期+星期公式之疑惑...

如下圖所示

B4公式為  =IFERROR(IF(WEEKDAY(A4,2)=7,"日",WEEKDAY(A4,2)),"")

請問該如何修正??

[attach]36275[/attach]

[attach]36276[/attach]
作者: 准提部林    時間: 2023-5-4 11:13

A6//日期
=IF(MONTH(MAX(A$4:A4)+1)=$AH$2,MAX(A$4:A4)+1,"")

B4//星期
=RIGHT(TEXT(A4,"aaa"))
作者: cypd    時間: 2023-5-4 12:49

回復 2# 准提部林

感謝  准提部林回覆

經代入公式實測...星期顯示還是一樣結果喔

Office 2010 版(win 10)
作者: aer    時間: 2023-5-4 15:38

回復 3# cypd

A4=DATE($AH$1+1911,$AH$2,1)
作者: 准提部林    時間: 2023-5-4 16:33

回復 3# cypd


沒注意到是民國年, +1911
作者: cypd    時間: 2023-5-5 00:46

回復 4# aer

非常感謝 aer 回覆
原來問題...民國年與西元年有息息相關...

經實測以測是正常顯示無誤  ^^
作者: cypd    時間: 2023-5-5 00:49

回復 5# 准提部林

感謝 准提部林 ...

已參酌  民國年, +1911

所提問題已修正完成  ^^
作者: Andy2483    時間: 2023-5-8 15:08

謝謝論壇,謝謝各位前輩
後學藉此帖練習VBA的方法,學習方案如下:

Option Explicit
Sub TEST_2()
Dim Brr, i&, Y%, M%, D1 As Date, D2 As Date, N%
Y = [AH1] + 1911: M = [AH2]: D1 = Y & "/" & M & "/" & "1"
Y = IIf(M = 12, Y + 1, Y): M = IIf(M = 12, 1, M + 1)
D2 = Y & "/" & M & "/" & "1": D2 = D2 - 1
With [A4:B65]
   .ClearContents: Brr = .Value: .FormatConditions.Delete: .Interior.ColorIndex = xlNone
   For i = 0 To (D2 - D1)
      Brr(i * 2 + 1, 1) = D1 + N: Brr(i * 2 + 1, 2) = Right(Format(D1 + N, "aaa"), 1)
      If InStr("六日", Brr(i * 2 + 1, 2)) Then Cells(i * 2 + 4, "B").Interior.ColorIndex = 38
      N = N + 1
   Next
   .Value = Brr
End With
End Sub
作者: cypd    時間: 2023-5-14 16:59

回復 8# Andy2483

非常感謝 Andy2483

實測之後執行順暢...感謝
作者: Andy2483    時間: 2023-5-15 08:26

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

回復 9# cypd


    謝謝前輩回復,一起學習
後學今天複習這帖,方案學習心得註解如下,請前輩參考

Option Explicit
Sub TEST_2()
Dim Brr, i&, Y%, M%, D1 As Date, D2 As Date
'↑宣告變數
Y = [AH1] + 1911: M = [AH2]: D1 = Y & "/" & M & "/" & "1"
'↑令Y變數是 [AH1]儲存格值+1911,
'令M變數是 [AH2]儲存格值,
'令D1這日期變數是 西元年/月/1

Y = IIf(M = 12, Y + 1, Y): M = IIf(M = 12, 1, M + 1)
'如果月份是12,就令年分+1,
'如果月份是12,就令月份是 1月,否則就將月份+1,
'這是要處裡跨年辨認12月最後一天

D2 = Y & "/" & M & "/" & "1": D2 = D2 - 1
'↑令D2這日期變數是 西元年/月/1 (D2是下個月的第1天)
'↑令D2變數是自身日期的前一天(也就是上個月的最後一天)
With [A4:B65]
'↑以下是關於儲存格的程序
   .ClearContents: Brr = .Value
   '↑清除儲存格內容
   .FormatConditions.Delete
   '↑刪除格式化條件
   .Interior.ColorIndex = xlNone
   '↑令儲存格底色是 無色
   For i = 0 To (D2 - D1)
   '↑設順迴圈
      Brr(i * 2 + 1, 1) = D1 + i + 1: Brr(i * 2 + 1, 2) = Right(Format(D1 + i + 1, "aaa"), 1)
      '↑令日期與星期寫入Brr陣列裡
      If InStr("六日", Brr(i * 2 + 1, 2)) Then Cells(i * 2 + 4, "B").Interior.ColorIndex = 38
      '↑令即將是星期六日的儲存格底色先變為桃紅色
   Next
   .Value = Brr
   '↑令Brr陣列值寫入儲存格中
End With
End Sub
作者: cypd    時間: 2023-5-17 00:35

回復 10# Andy2483

非常感謝 Andy2483 再度更新

依所式之程式碼測試結果

起始日期少一天...

[attach]36376[/attach]
作者: Andy2483    時間: 2023-5-17 07:13

回復 11# cypd


    謝謝前輩
後學囫圇吞棗的學習想必困擾各位了,謝謝論壇的包容,謝謝各位前輩指教
後學訂正如下的學習方案心得註解,請前輩參考


Option Explicit
Sub TEST_2()
Dim Brr, i&, Y%, M%, D1 As Date, D2 As Date, N%
'↑宣告變數
Y = [AH1] + 1911: M = [AH2]: D1 = Y & "/" & M & "/" & "1"
'↑令Y變數是 [AH1]儲存格值+1911,
'令M變數是 [AH2]儲存格值,
'令D1這日期變數是 西元年/月/1

Y = IIf(M = 12, Y + 1, Y): M = IIf(M = 12, 1, M + 1)
'如果月份是12,就令年分+1,
'如果月份是12,就令月份是 1月,否則就將月份+1,
'這是要處裡跨年辨認12月最後一天

D2 = Y & "/" & M & "/" & "1": D2 = D2 - 1
'↑令D2這日期變數是 西元年/月/1 (D2是下個月的第1天)
With [A4:B65]
'↑以下是關於儲存格的程序
   .ClearContents: Brr = .Value
   '↑清除儲存格內容
   .FormatConditions.Delete
   '↑刪除格式化條件
   .Interior.ColorIndex = xlNone
   '↑令儲存格底色是 無色
   For i = 0 To (D2 - D1)
   '↑設順迴圈
      Brr(i * 2 + 1, 1) = D1 + N: Brr(i * 2 + 1, 2) = Right(Format(D1 + N, "aaa"), 1)
      '↑令日期與星期寫入Brr陣列裡
      If InStr("六日", Brr(i * 2 + 1, 2)) Then Cells(i * 2 + 4, "B").Interior.ColorIndex = 38
      '↑令即將是星期六日的儲存格底色先變為桃紅色
      N = N + 1
      '↑令N變數累加 1
   Next
   .Value = Brr
   '↑令Brr陣列值寫入儲存格中
End With
End Sub
作者: cypd    時間: 2023-5-20 00:37

回復 12# Andy2483

非常感謝 Andy2483 再度更新

經實測正常顯示

今希望經由點擊 年 或 月 上下鍵時...日期及星期能自動更新顯示該如何修正程式嗎??

[attach]36403[/attach]
作者: Andy2483    時間: 2023-5-22 07:51

本帖最後由 Andy2483 於 2023-5-22 07:52 編輯

回復 13# cypd


    謝謝前輩再回復
右鍵指定巨集:
[attach]36404[/attach]

輸入 TEST_2:
[attach]36405[/attach]

年份同樣的方式設定
作者: cypd    時間: 2023-5-22 23:41

回復 14# Andy2483

非常感謝 Andy2483 不吝指導

年(月)份設定右鍵指定巨集就能達成所需結果…感恩啊  ^^




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)