
Công thức chung
=SUMPRODUCT(--(WEEKDAY(dates)=day_num))
Tóm lược
Để đếm ngày theo ngày trong tuần (tức là đếm thứ Hai, thứ Ba, thứ Tư, v.v.), bạn có thể sử dụng hàm SUMPRODUCT cùng với hàm WEEKDAY. Trong ví dụ được hiển thị, công thức trong F4 là:
=SUMPRODUCT(--(WEEKDAY(dates,2)=E4))
Lưu ý: "ngày tháng" là phạm vi được đặt tên B4: B15.
Giải trình
Bạn có thể thắc mắc tại sao chúng tôi không sử dụng COUNTIF hoặc COUNTIF? Các chức năng này dường như là giải pháp hiển nhiên. Tuy nhiên, nếu không thêm cột trợ giúp có chứa giá trị ngày trong tuần, thì không có cách nào để tạo tiêu chí cho COUNTIF để đếm các ngày trong tuần trong một phạm vi ngày.
Thay vào đó, chúng tôi sử dụng hàm SUMPRODUCT đa năng, chức năng này xử lý các mảng một cách duyên dáng mà không cần sử dụng Control + Shift + Enter.
Chúng tôi đang sử dụng SUMPRODUCT chỉ với một đối số, bao gồm biểu thức sau:
--(WEEKDAY(dates,2)=E4)
Làm việc từ trong ra ngoài, hàm WEEKDAY được cấu hình với đối số tùy chọn 2, khiến nó trả về số 1-7 cho các ngày từ Thứ Hai đến Chủ Nhật, tương ứng. Điều này giúp bạn liệt kê các ngày theo thứ tự với các số trong cột E theo thứ tự dễ dàng hơn.
Sau đó, WEEKDAY đánh giá từng ngày trong phạm vi được đặt tên là "ngày tháng" và trả về một số. Kết quả là một mảng như thế này:
(1;3;7;1;5;2;7;1;7;5;4;7)
Các số được trả về bởi WEEKDAY sau đó được so sánh với giá trị trong E4, là 1:
(1;3;7;1;5;2;7;1;7;5;4;7)=1
Kết quả là một mảng các giá trị TRUE / FALSE.
(TRUE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;FALSE)
SUMPRODUCT chỉ hoạt động với số (không phải văn bản hoặc boolean), vì vậy chúng tôi sử dụng âm kép để ép buộc các giá trị TRUE / FALSE thành một và số không:
(1;0;0;1;0;0;0;1;0;0;0;0)
Với một mảng duy nhất để xử lý, SUMPRODUCT tính tổng các mục và trả về kết quả, 3.
Xử lý các ngày trống
Nếu bạn có các ô trống trong danh sách ngày, bạn sẽ nhận được kết quả không chính xác, vì hàm WEEKDAY sẽ trả về kết quả ngay cả khi không có ngày. Để xử lý các ô trống, bạn có thể điều chỉnh công thức như sau:
=SUMPRODUCT((WEEKDAY(dates,2)=E4)*(dates""))
Nhân với biểu thức (ngày "") là một cách để hủy bỏ các ô trống.