Không khó lắm. Phần khó nhất là phần đếm số ngày lễ trong các khoảng
Cách dễ hơn là tính trước số giai đọan 180 ngày giữa ngày bắt đầu và ngày hiện tại (không có ngày kết thúc), để dùng được trong công thức 365.
Số giai đoạn N = (ngày hiện tại - ngày bắt đầu) / 180 lấy số nguyên.
Sau đó dùng Sequence(1, N, ngày bắt đầu, 180) để liệt kê các ngày, còn ngày cuối thì so sánh với Today(). CUối cùng thì TextJoin.
Tuy nhiên đó là chưa nói đến ngày lễ.
Còn ngày lễ thì chỉ + 1 nếu như sau khi cộng 180 trùng ngày lễ, chứ không phải là đếm số ngày lễ trong khoảng như anh nói.
Vấn đề là sau khi cộng 1 ra ngày bắt đầu của giai đoạn n, thì qua giai đoạn n + 1 lấy ngày đó cộng 180 hay lấy ngày trước khi cộng 1 để cộng 180? Câu hỏi này quan trọng và được hỏi từ bài 22 mà chưa trả lời
File mới hơn, đã liệt kê ngày lễ nhưng lại rất hời hợt và vô trách nhiệm. 1 năm 13 ngày lễ mà chỉ liệt kê có 4. Và đáng lẽ phải liệt kê lễ của ít nhất 5 năm trước 2024 và 5 năm sau 2024 là 130 ngày lễ mới đúng. Tại sao? Ngày bắt đầu mẫu trong file có ngày bắt đầu năm 2023, liệt kê lễ chỉ của năm 2024 thì sao đủ? Rồi dữ liệu khác bắt đầu 2019, 2020, ... thì sao?
Ngoài ra, Today() là 31/10/2024. Xài 3 tháng là qua năm 2025 trúng ngay ngày tết Tây mà không liệt kê ra? Dự phòng xài 5 năm mới phải chứ chẳng lẽ xài 3 tháng lại lên xin code mới!