Chào mọi người,
Mình có một file Excel với dữ liệu được nhóm theo nhiều tiêu chí khác nhau. Mình đang muốn tự động đánh số thứ tự (STT) cho từng nhóm này, ví dụ như 1, 2, 3... cho nhóm A, rồi lại bắt đầu lại 1, 2, 3... cho nhóm B. Sau khi tìm hiểu và thử nghiệm, mình thấy công thức kết hợp SUBTOTAL và IF khá hiệu quả cho việc này.
Cách hoạt động:
- Hàm
SUBTOTALvới đối số 102 (tương đươngCOUNTAnhưng bỏ qua các dòng ẩn) sẽ đếm số lượng các ô không trống trong một phạm vi. - Khi kết hợp với
IF, chúng ta có thể kiểm tra xem dòng hiện tại có phải là dòng đầu tiên của một nhóm mới hay không.
Công thức ví dụ:
Giả sử cột bạn muốn nhóm là cột A (từ A2 trở xuống) và bạn muốn điền STT vào cột B (từ B2 trở xuống). Công thức tại B2 sẽ là:
=IF(A2=A1, B1+1, 1)Tuy nhiên, công thức này chỉ hoạt động khi dữ liệu được sắp xếp liên tục. Để xử lý trường hợp dữ liệu có thể bị ẩn hoặc lọc, chúng ta sẽ dùng SUBTOTAL:
=IF(SUBTOTAL(103, A2)=1, 1, IF(A2=A1, B1+1, 1))Trong đó:
SUBTOTAL(103, A2): Đếm số lượng ô không trống trong A2 (103 tương đươngCOUNT). Nếu đây là dòng đầu tiên hiển thị của nhóm, giá trị này sẽ là 1.IF(SUBTOTAL(103, A2)=1, 1, ...): Nếu là dòng đầu tiên của nhóm, STT bắt đầu bằng 1.IF(A2=A1, B1+1, 1): Phần này vẫn dùng để kiểm tra nếu dòng hiện tại giống dòng trước thì tăng STT lên 1, nếu không thì reset về 1.
Lưu ý:
- Bạn cần điều chỉnh phạm vi
A2vàA1cho phù hợp với dữ liệu thực tế của bạn. - Nếu cột dùng để nhóm có thể chứa ô trống, bạn cần cân nhắc điều chỉnh công thức để tránh lỗi.
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, cùng thảo luận nhé!