Chào mọi người,
Hôm nay mình muốn chia sẻ một mẹo nhỏ nhưng khá hữu ích khi làm việc với việc đánh số thứ tự theo nhóm có điều kiện phức tạp hơn một chút. Đôi khi chúng ta cần đánh STT theo một nhóm nào đó, nhưng lại có thêm một điều kiện phụ để phân biệt các nhóm con bên trong. Ví dụ, đánh STT cho các đơn hàng theo từng khách hàng, nhưng nếu cùng khách hàng đó có nhiều loại sản phẩm thì lại muốn STT riêng cho từng loại sản phẩm.
Mình đã thử nghiệm và thấy cách kết hợp IF, COUNTIFS và OFFSET khá hiệu quả. Giả sử dữ liệu của bạn bắt đầu từ dòng 2, cột A là Mã khách hàng, cột B là Mã sản phẩm, và bạn muốn đánh STT vào cột C.
Công thức có thể trông như thế này:
=IF(AND(A2A1,B2B1),1,IF(B2=B1,C1+1,1))Tuy nhiên, công thức trên chỉ hoạt động tốt nếu không có dòng trống hoặc các nhóm liền kề nhau. Khi có điều kiện lồng nhau phức tạp hơn, ví dụ như cần đánh STT theo Mã Khách Hàng, rồi lại đánh STT riêng cho từng Mã Sản Phẩm của Khách Hàng đó, công thức trên sẽ không đủ.
Một cách tiếp cận khác, linh hoạt hơn, là dùng SUMPRODUCT hoặc COUNTIFS kết hợp với IF để kiểm tra sự thay đổi của cả hai cột điều kiện. Ví dụ, để đánh STT theo Khách hàng (Cột A) và Sản phẩm (Cột B) từ dòng 2:
=IF(A2=