Chào mọi người,
Trong quá trình làm việc với các bảng dữ liệu lớn, đôi khi chúng ta cần đánh số thứ tự (STT) theo từng nhóm. Ví dụ, trong một danh sách các sản phẩm, ta muốn STT của từng loại sản phẩm sẽ bắt đầu lại từ 1. Trước đây, việc này khá phức tạp và thường phải dùng đến VBA. Tuy nhiên, với sự phát triển của các hàm Excel, giờ đây chúng ta có thể làm điều này hoàn toàn bằng công thức.
Hôm nay, mình muốn chia sẻ một cách làm khá hay ho, kết hợp hàm SUBTOTAL và IF để tự động cập nhật STT theo nhóm, ngay cả khi bạn lọc dữ liệu.
Giả sử bạn có một bảng dữ liệu với cột 'Loại Sản Phẩm' ở cột A và bạn muốn đánh STT theo loại sản phẩm đó ở cột B. Công thức bạn có thể áp dụng cho ô B2 sẽ như sau:
=IF(A2=A1, SUBTOTAL(3,$B$2:B2)+1, 1)Giải thích công thức:
IF(A2=A1, ...): Kiểm tra xem loại sản phẩm ở dòng hiện tại (A2) có giống với dòng trên không (A1).SUBTOTAL(3,$B$2:B2)+1: Nếu giống, tức là vẫn thuộc nhóm cũ, chúng ta sẽ đếm số lượng các dòng không trống (hàmSUBTOTALvới đối số 3 làCOUNTA) từ đầu danh sách ($B$2) đến dòng hiện tại (B2) và cộng thêm 1. Việc dùngSUBTOTALở đây rất hay vì nó sẽ chỉ đếm các dòng đang hiển thị sau khi lọc, giúp STT luôn chính xác.1: Nếu loại sản phẩm ở dòng hiện tại khác với dòng trên, tức là bắt đầu một nhóm mới, thì STT sẽ bắt đầu lại từ 1.
Lưu ý: Bạn cần điều chỉnh vùng $B$2:B2 cho phù hợp với phạm vi dữ liệu của bạn và đảm bảo rằng ô đầu tiên của cột STT (trong ví dụ này là B2) luôn là 1 nếu nó bắt đầu một nhóm mới hoặc bạn có thể điều chỉnh logic một chút.
Cách này rất tiện lợi khi bạn cần sắp xếp hoặc phân tích dữ liệu theo nhóm mà STT luôn được cập nhật chính xác. Hy vọng chia sẻ này hữu ích cho mọi người!