返回列表 上一主題 發帖

[發問] 直式日期+星期公式之疑惑...

[發問] 直式日期+星期公式之疑惑...

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

如下圖所示

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

請問該如何修正??

1120503.jpg
2023-5-4 01:15


1120503.rar (21.09 KB)

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

B4//星期
=RIGHT(TEXT(A4,"aaa"))

TOP

回復 2# 准提部林

感謝  准提部林回覆

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

Office 2010 版(win 10)

TOP

回復 3# cypd

A4=DATE($AH$1+1911,$AH$2,1)

TOP

回復 3# cypd


沒注意到是民國年, +1911

TOP

回復 4# aer

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

經實測以測是正常顯示無誤  ^^

TOP

回復 5# 准提部林

感謝 准提部林 ...

已參酌  民國年, +1911

所提問題已修正完成  ^^

TOP

謝謝論壇,謝謝各位前輩
後學藉此帖練習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
看得懂是應該的,懂得應用才像學生,臉皮厚點學會更謹慎積極

TOP

回復 8# Andy2483

非常感謝 Andy2483

實測之後執行順暢...感謝

TOP

本帖最後由 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
看得懂是應該的,懂得應用才像學生,臉皮厚點學會更謹慎積極

TOP

        靜思自在 : 甘願做、歡喜受。
返回列表 上一主題