Chào mọi người,
Dạo này mình hay phải làm việc với các bảng dữ liệu lớn, và thường xuyên gặp phải vấn đề làm sao để tạo một chuỗi số thứ tự (STT) duy nhất cho từng nhóm dữ liệu mà không bị trùng lặp. Ví dụ, mình có một danh sách các sản phẩm và người bán, mình muốn đánh STT cho từng sản phẩm, và STT này sẽ tự động reset về 1 khi gặp một sản phẩm mới.
Mình đã thử dùng IF(B2B1,1,STT_TRUOC+1) nhưng cách này chỉ hiệu quả khi dữ liệu đã được sắp xếp theo cột cần nhóm. Nếu dữ liệu chưa sắp xếp thì công thức này không hoạt động đúng.
Gần đây, mình có tìm hiểu và phát hiện ra một cách kết hợp hàm SUMPRODUCT và COUNTIF để giải quyết vấn đề này một cách khá gọn gàng, ngay cả khi dữ liệu chưa được sắp xếp. Công thức như sau:
=SUMPRODUCT(--(B$2:B2=B2),--(ROW(B$2:B2))) - SUMPRODUCT(--(B$2:B2=B2),--(ROW(B$2:B2)-1))Trong đó:
B$2:B2là vùng chứa dữ liệu bạn muốn nhóm (ví dụ: cột Tên sản phẩm). Dấu$ở dòng 2 là cố định để khi kéo công thức xuống, nó luôn bắt đầu từ dòng 2.B2là ô chứa giá trị hiện tại của cột nhóm.ROW(B$2:B2)trả về một mảng các số thứ tự của các dòng từ 2 đến dòng hiện tại.
Công thức này về cơ bản sẽ đếm số lần xuất hiện của giá trị hiện tại từ đầu danh sách đến dòng hiện tại, sau đó trừ đi tổng các số thứ tự trước đó của các lần lặp lại. Kết quả là bạn sẽ có một chuỗi STT duy nhất cho từng nhóm.
Cách này rất tiện lợi khi bạn cần đánh STT theo các nhóm khác nhau mà không cần phải sắp xếp lại dữ liệu. Hy vọng chia sẻ này hữu ích cho mọi người!
Có ai có cách nào khác hay hơn không, chia sẻ cùng mình nhé!