標題:
[發問]
直式日期+星期公式之疑惑...
[打印本頁]
作者:
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/)