Excel每月最後一個工作天

要在Excel中找出每月最後一個工作日,你可以使用以下公式:

=DATE(YEAR(A1),MONTH(A1),DAY(A1))

其中,A1是代表當前日期的單元格。這個公式會返回當前月的最後一天。

如果你想要找出當前月的最後一個工作日,你可能需要考慮當地的法定節假日。這通常需要一個包含所有法定節假日的數據庫或列表,並且需要寫一個複雜的公式或使用VBA腳本來檢查每個月的每一天是否是工作日。

如果你有一個包含法定節假日的列表,你可以使用以下公式來找出最後一個工作日:

=MAX(IF(WEEKDAY(A1:A1000,2)>5,A1:A1000))

這個公式假設你的法定節假日列表從A1開始,並且包含1000個日期。2是用來指定星期六和星期日為周末。這個公式會返回最大的工作日,即最後一個工作日。

如果你沒有法定節假日列表,你可以使用VBA腳本來生成一個,並且使用上述公式來找出最後一個工作日。以下是一個簡單的VBA腳本示例,用來生成法定節假日列表:

Sub CreateHolidayList()
    Dim startDate As Date, endDate As Date, i As Integer

    ' 請輸入開始日期和結束日期
    startDate = "2023-01-01"
    endDate = "2023-12-31"

    ' 初始化一個空陣列
    ReDim holidays(1 To 12) As Date

    ' 循環遍歷每個月份
    For i = 1 To 12
        ' 計算當前月的最後一天
        holidays(i) = DateSerial(Year(startDate), i + 1, 1) - 1

        ' 檢查當前月的每一天是否是法定節假日
        If Weekday(holidays(i), vbSaturdayAndSunday) = vbSaturday Or _
           Weekday(holidays(i), vbSaturdayAndSunday) = vbSunday Then
            ' 如果是周末,則將其添加到法定節假日列表中
            holidays(i) = DateAdd("d", 1, holidays(i))
        End If
    Next i

    ' 將法定節假日列表輸出到工作表中
    Range("A1").Resize(12, 1).Value = Application.Transpose(holidays)
End Sub

這個腳本會將法定節假日列表輸出到工作表的A1:L1範圍內。然後你可以使用上述公式來找出最後一個工作日。