
Công thức chung
=SUMPRODUCT((holidays>=start)*(holidays<=end))
Tóm lược
Để đếm ngày lễ xảy ra giữa hai ngày, bạn có thể sử dụng hàm SUMPRODUCT.
Trong ví dụ được hiển thị, công thức trong F8 là:
=SUMPRODUCT((B4:B12>=F5)*(B4:B12<=F6))
Giải trình
Công thức này sử dụng hai biểu thức trong một mảng bên trong hàm SUMPRODUCT.
Biểu thức đầu tiên kiểm tra mỗi ngày nghỉ để xem liệu ngày đó lớn hơn hoặc bằng ngày bắt đầu trong F5:
(B4:B12>=F5)
Điều này trả về một mảng các giá trị TRUE / FALSE như sau:
(FALSE; FALSE; FALSE; FALSE; TRUE; TRUE; TRUE; TRUE; TRUE)
Biểu thức thứ hai kiểm tra mỗi ngày nghỉ để xem liệu ngày đó nhỏ hơn hoặc bằng ngày kết thúc trong F6:
(B4:B12<=F6)
trả về một mảng các giá trị TRUE / FALSE như sau:
(TRUE; TRUE; TRUE; TRUE; TRUE; TRUE; TRUE; TRUE; FALSE)
Việc nhân hai mảng này sẽ tự động ép các giá trị TRUE / FALSE thành một và không, dẫn đến các mảng trông như thế này:
=SUMPRODUCT(((0;0;0;0;1;1;1;1;1))*((1;1;1;1;1;1;1;1;0)))
Sau khi nhân, chúng ta chỉ có một mảng như sau:
=SUMPRODUCT((0;0;0;0;1;1;1;1;0))
Cuối cùng, SUMPRODUCT tính tổng các mục trong mảng và trả về 4.
Chỉ nghỉ vào các ngày trong tuần
Để tính các ngày lễ chỉ diễn ra vào các ngày trong tuần (Thứ Hai-Thứ Sáu), bạn có thể mở rộng công thức như sau:
=SUMPRODUCT((rng>=F5)*(rng<=F6)*(WEEKDAY(rng,2)<6))
trong đó rng là một phạm vi chứa các ngày lễ.