2023年7月24日 星期一

VBA:想要整理當月最後一日,但是不要是六日的日期+非交易日處理

 顯示最後一日 MSDN 參考

小編不想要周六跟周日,

所以加入工作日判斷,

先取得當月最後一天後

再判斷工作日

流程:

1.丟入日期:

A = DateSerial(Year(Sheets("twi_index").Range("h" & i)), Month(Sheets("twi_index").Range("h" & i)) + 1, 0)

g = Split(A, "/")

 2.處理出月底日期:

 TEMP_DAY = g(0) & "/" & g(1) & "/" & g(2)            

TEMP_DAY = Format(TEMP_DAY, "YYYY/mm/dd")

3.判斷六日:

 W = Mid("日一二三四五六", Weekday(TEMP_DAY), 1)

                If W = "日" Or W = "六" Then

                         TEMP_DAY = g(0) & "/" & g(1) & "/" & g(2) - 1

                         g = Split(TEMP_DAY, "/")

                         GoTo LINE2

                 End If

4.是六日>再處理>輸出,非六日>輸出

再續:

但發現有時候不特定放假,當日是沒有資料的。

所以加入交易日,做判斷用

 S_交易日 = Sheets("交易日").Range("A2000").End(xlUp).Row

交易日_DATA = Sheets("交易日").Range("A1:A" & S_交易日)

交易日_DATA = WorksheetFunction.Transpose(交易日_DATA)

交易日_CHECK = Filter(交易日_DATA, TEMP_DAY)

                       If UBound(交易日_CHECK) >= 0 Then                      

                             holiday_chick = 1                             

                       End If

 If UBound(交易日_CHECK) >= 0 Then

  holiday_chick = 1                                        

 g = Split(TEMP_DAY, "/")                                      

 TEMP_DAY = g(0) & "/" & g(1) & "/" & g(2) - 1                                        

GoTo LINE3                                        

End If

'當然要有一個工作表來放置交易日的資料。 哈

vba process
    載入交易日資料>丟入日期>判斷與處理六日>判斷與處理交易日資料>輸出
vba code

done:





 

                


                

                

    



沒有留言:

張貼留言