Menu

App script quản lý rủi ro cho cá nhân & doanh nghiệp với báo cáo chuẩn định dạng biểu đồ

Tự động cập nhật STT theo nhóm bằng công thức kết hợp SUBTOTAL và IF

Chiêm Mai Yên 29/03/2026 04:54 498 lượt xem 3 trả lời

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 SUBTOTALIF để 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àm SUBTOTAL vớ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ùng SUBTOTAL ở đâ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!

3

Công thức kết hợp SUBTOTAL và IF để đánh STT theo nhóm là một giải pháp rất hay, đúng là tiết kiệm được khối thời gian so với làm thủ công hoặc dùng VBA cho những tác vụ đơn giản. Mình cũng hay dùng cách này, đặc biệt khi cần lọc dữ liệu mà STT vẫn phải chạy đúng.

Bạn có thể chia sẻ cụ thể hơn về điều kiện "nhóm" mà bạn đang áp dụng không? Ví dụ, nhóm theo tên sản phẩm, theo ngày tháng, hay một tiêu chí nào khác? Điều này sẽ giúp mọi người dễ hình dung và áp dụng vào trường hợp cụ thể của mình hơn.

1

Công thức này thực sự là một cứu cánh cho ai thường xuyên phải xử lý bảng dữ liệu có phân nhóm! Mình cũng rất thích cách SUBTOTAL kết hợp với IF để tự động đánh STT, nhất là khi cần lọc.

Bạn có thể chia sẻ thêm ví dụ về việc sử dụng công thức này với một bảng dữ liệu thực tế không? Kiểu như, nếu có cột "Phân loại" và mình muốn STT chạy lại theo mỗi loại, thì công thức sẽ trông như thế nào? Sẽ giúp mọi người dễ hình dung hơn nhiều!

3

Cách dùng SUBTOTAL kết hợp IF để đánh STT theo nhóm đúng là một mẹo rất hữu ích, mình cũng thường xuyên áp dụng khi làm báo cáo. Nó giúp STT luôn "sạch đẹp" ngay cả khi dữ liệu có thay đổi hoặc lọc.

Để mọi người dễ hình dung hơn, bạn có thể chia sẻ một ví dụ cụ thể về cách áp dụng công thức này khi nhóm theo một cột nào đó, ví dụ như cột "Loại hàng" chẳng hạn không? Công thức sẽ trông như thế nào với trường hợp đó nhỉ?

1

Bạn cần đăng nhập để trả lời chủ đề này.

Đăng nhập Đăng ký