Trong công việc quản lý dữ liệu, việc tính toán và phân loại các dòng trong bảng tính là một thao tác căn bản. Tuy nhiên, khi bạn cần lọc, ẩn hoặc xóa một số dòng, các số thứ tự gắn sẵn thường không còn phản ánh đúng thứ tự thực sự của dữ liệu hiện đang hiển thị. Điều này gây ra nhầm lẫn khi báo cáo, phân tích dữ liệu, hoặc khi bạn cần làm việc với các công thức tham chiếu. Để giải quyết vấn đề này, Excel cung cấp nhiều cách khác nhau để đánh số thứ tự một cách linh hoạt ngay cả khi dòng đã bị ẩn. Bài viết này sẽ hướng dẫn chi tiết các phương pháp làm việc này, từ cách đơn giản nhất với công thức tính toán đến cách nâng cao bằng VBA, giúp bạn luôn có thể duy trì thứ tự đúng đắn cho dữ liệu của mình.
Có thể bạn quan tâm: Mã Số Thứ Tự Theo Nhóm Trong Excel: Tối Ưu Hóa Công Việc Dữ Liệu
1. Nhu cầu đánh số thứ tự trong Excel khi ẩn dòng
Trước khi đi vào các công thức, hãy xác định rõ mục tiêu của bạn:
Đánh số liên tục trên toàn bộ bảng: Bạn muốn số thứ tự luôn tăng dần, kể cả khi có dòng ẩn. Đây là trường hợp phổ biến khi làm báo cáo tổng hợp.
రూreferwaarde
this may be a translation error, but basically we want sequential numbering that skips hidden rows or shows actual position.
But we need to write in Vietnamese and robust.
We need to produce at least 1500 words. We’ll produce roughly 2000 words redo.
Let’s produce properly.
Cách đánh số thứ tự trong Excel khi ẩn dòng
Trong môi trường làm việc với dữ liệu, việc đánh số thứ tự cho các dòng trong bảng tính là một công việc thiết yếu. Khi bạn cần lọc, ẩn hoặc xóa các dòng, các số thứ tự gắn sẵn thường không còn phản ánh đúng thứ tự thực sự của dữ liệu đang hiển thị. Điều này gây ra những nhầm lẫn lớn khi báo cáo, phân tích dữ liệu hoặc khi bạn cần làm việc với các công thức tham chiếu. Để khắc phục vấn đề này, Excel cung cấp rất nhiều phương pháp đánh số thứ tự linh hoạt, từ cách tối giản nhất với công thức tính toán đến cách nâng cao bằng VBA. Bài viết dưới đây sẽ hướng dẫn chi tiết từng cách, giúp bạn luôn có thể duy trì thứ tự đúng đắn cho dữ liệu của mình, ngay cả khi dòng đã bị ẩn.
Có thể bạn quan tâm: Đánh Số Thứ Tự La Mã Trong Excel
1. Kiến thức nền tảng: Tại sao số thứ tự lại bị lệch khi ẩn dòng?
Khi bạn nhập số thứ tự vào cột A (ví dụ: 1, 2, 3, 4, 5, …), các ô này sẽ luôn giữ giá trị cố định. Nếu bạn lọc hoặc ẩn một số dòng, các ô số thứ tự vẫn giữ nguyên giá trị ban đầu. Do đó, khi nhìn vào bảng sau khi ẩn, bạn sẽ thấy các số thứ tự không liên tục (ví dụ: 1, 2, 4, 5). Để khắc phục điều này, chúng ta cần một cách tính số thứ tự dựa trên vị trí hiện tại của mỗi dòng, không phụ thuộc vào giá trị gốc.
Có thể bạn quan tâm: Đánh Số Thứ Tự Hàng Ngang Trong Excel
2. Phương pháp 1: Sử dụng hàm SUBTOTAL kết hợp với INDEX
Công thức này cho phép bạn tính số thứ tự dựa trên vị trí của dòng trong phạm vi đã được lọc hoặc ẩn. Đây là một phương pháp phổ biến và không cần VBA.
2.1. Chuẩn bị dữ liệu
Giả sử bạn có dữ liệu trong cột B bắt đầu từ B2 xuống dưới. Bạn muốn đánh số thứ tự trong cột A.
- Đặt công thức sau trong ô A2:
excel =SUBTOTAL(103, $B$2:B2) 103là mã hàmSUBTOTALđể tínhCOUNTAmà bỏ qua các ô ẩn.$B$2:B2là phạm vi được mở rộng dần dần khi bạn kéo công thức xuống.Kéo công thức từ A2 xuống dưới cho tới hết dữ liệu.
2.2. Điểm mạnh
- Không cần VBA: Hỗ trợ ngay trên mọi phiên bản Excel.
- Tự động cập nhật: Khi bạn lọc hoặc ẩn dòng, số thứ tự sẽ tự động điều chỉnh.
- Dễ dàng áp dụng: Chỉ cần một dòng công thức.
2.3. Giới hạn
- Công thức này chỉ hoạt động đúng khi bạn sử dụng bộ lọc (Filter) hoặc ẩn bằng cách thủ công (Hide). Nếu bạn xóa dòng, số thứ tự sẽ không được cập nhật.
- Nếu bạn có dữ liệu mở rộng (dữ liệu yakın), công thức cần được sao chép lại.
3. Phương pháp 2: Sử dụng hàm AGGREGATE
Hàm AGGREGATE rất mạnh mẽ, hỗ trợ nhiều chức năng như SUBTOTAL, COUNT, MAX, MIN và có thể bỏ qua các dòng bị ẩn hoặc lỗi. Đây là một cách thay thế cho SUBTOTAL.
3.1. Công thức
Trong ô A2, nhập công thức sau:
=AGGREGATE(15, 6, ROW($B$2:$B$100)/($B$2:$B$100<>""), 1)
15là mã hàmSMALL.6là tùy chọn bỏ qua lỗi và dòng ẩn.ROW($B$2:$B$100)/($B$2:$B$100<>"")tạo ra một mảng các số hàng và loại bỏ các ô trống.1là tham số thứ tự thứ nhất (lớn nhất) trong mảng.
3.2. Đơn giản hơn
Nếu bạn muốn đánh số thứ tự mà không cần tính các ô trống, bạn chỉ cần:
=AGGREGATE(15, 6, ROW($A$2:$A$100), 1)
3.3. Ưu điểm
- Bỏ qua lỗi: Nếu có lỗi trong dữ liệu, công thức vẫn hoạt động.
- Độ linh hoạt cao: Bạn có thể thay đổi các tham số để phù hợp với dữ liệu khác nhau.
3.4. Nhược điểm
- Đòi hỏi hiểu rõ mã hàm và cách cấu hình, có thể hơi phức tạp đối với người mới.
4. Phương pháp 3: Sử dụng hàm INDEX kết hợp SMALL và ROW
Công thức này cực kỳ linh hoạt và có thể được tùy chỉnh cho nhiều trường hợp khác nhau, bao gồm cả việc lọc dữ liệu.
4.1. Công thức mẫu

Có thể bạn quan tâm: Đánh Số Thứ Tự Trong Excel Bằng Fill: Hướng Dẫn Chi Tiết Và Ứng Dụng Thực Tế
Trong ô A2, nhập:
=INDEX($A$2:$A$100, SMALL(IF($B$2:$B$100<>"", ROW($B$2:$B$100)-ROW($B$2)+1), ROW(1:1)))
- Đây là công thức mảng, nên bạn phải nhấn
Ctrl+Shift+Entertrong Excel cũ. Trong Excel 365 và Excel 2026 trở đi, công thức này tự động tính được.
4.2. Giải thích
IF($B$2:$B$100<>"", ROW($B$2:$B$100)-ROW($B$2)+1)tạo ra một mảng số thứ tự dựa trên hàng có dữ liệu.SMALL(..., ROW(1:1))lấy số thứ tự thứ nhất, thứ hai, v.v. khi bạn kéo công thức xuống.INDEX($A$2:$A$100, ...)trả về giá trị thực sự từ cột A.
4.3. Lợi ích
- Tùy chỉnh cao: Bạn có thể áp dụngעס bất kỳ điều kiện nào vào hàm IF.
- Tự động cập nhật: Khi lọc, ẩn hoặc xóa dòng, công thức vẫn giữ nguyên tính chính xác.
4.4. Nhược điểm
- Phức tạp hơn và có thể gây lãng phí tài nguyên tính toán nếu phạm vi dữ liệu lớn.
5. Phương pháp 4: Đánh số thứ tự tự động bằng VBA
Nếu bạn thường xuyên làm việc với các bảng dữ liệu lớn và cần tính toán nhanh, VBA là một công cụ mạnh mẽ. Dưới đây là ví dụ cho một macro đơn giản.
5.1. Macro mẫu
Sub AutoNumbering() Dim ws As Worksheet Dim rng As Range Dim i As Long Set ws = ActiveSheet ' Giả sử dữ liệu bắt đầu từ B2 Set rng = ws.Range("B2", ws.Cells(ws.Rows.Count, "B").End(xlUp)) i = 1 For Each cell In rng If Not cell.EntireRow.Hidden Then cell.Offset(0, -1).Value = i i = i + 1 End If Next cell
End Sub
- Macro này sẽ đánh số thứ tự trong cột A (offset -1) dựa trên các dòng chưa bị ẩn.
- Bạn có thể chạy macro khi cần, hoặc gắn vào sự kiện
Worksheet_Changeđể tự động cập nhật.
5.2. Tùy chỉnh macro
Bạn có thể thay đổi biến rng để đánh số trong bất kỳ cột nào hoặc áp dụng điều kiện lọc phức tạp hơn. Ví dụ:
If cell.Offset(0, 1).Value <> "" Then ' Kiểm tra cột C
5.3. Ưu điểm
- Nhanh chóng: Tính toán ngay lập tức, không phụ thuộc vào công thức lặp.
- Tích hợp linh hoạt: Bạn có thể thực hiện nhiều thao tác khác nhau trong cùng một macro.
5.4. Nhược điểm
- Cần kiến thứcәс VBA: Người mới có thể cần thời gian học.
- Không tự động: Bạn phải chạy macro mỗi khi cần cập nhật.
6. Phương pháp 5: Sử dụng hàm COUNTA trong cột thứ tự
Nếu bạn không muốn dùng SUBTOTAL hay AGGREGATE, một cách đơn giản khác là dùng COUNTA kết hợp với OFFSET.
6.1. Công thức
Trong ô A2:
=COUNTA($B$2:INDIRECT("B"&ROW()))
- Công thức này tính số ô có dữ liệu từ B2 tới dòng hiện tại (ROW()).
- Khi bạn ẩn dòng, công thức vẫn tính chính xác.
6.2. Lưu ý
INDIRECTlàm cho công thức trở nên chậm hơn nếu phạm vi dữ liệu lớn.- Phải chắc chắn rằng dữ liệu trong cột B không có ô trống giữa các dòng.
7. Tổng hợp và lựa chọn phương pháp phù hợp
| Phương pháp | Giới hạn | Ưu điểm | Cần thiết yếu |
|---|---|---|---|
SUBTOTAL | Chỉ cho lọc/ẩn | Dễ dùng, không VBA | Đánh số liên tục khi lọc/ẩn |
AGGREGATE | Cần hiểu mã hàm | Độ linh hoạt cao | Khi cần bỏ qua lỗi |
Hàm INDEX/SMALL | Cũng là công thức mảng | Tùy chỉnh cao | Khi có điều kiện phức tạp |
| VBA Macro | Cần lập trình | Nhanh, linh hoạt | Khi làm việc với dữ liệu lớn |
COUNTA + INDIRECT | Chậm nếu dữ liệu lớn | Đơn giản | Khi dữ liệu không có ô trống |
Bạn có thể chọn phương pháp phù hợp dựa trên:
- Bản chất dữ liệu: Nếu dữ liệu có ô trống, hãy tránh
COUNTA. - Tần suất làm việc: Nếu bạn cập nhật thường xuyên, hãy cân nhắc VBA.
- Khả năng sử dụng công thức: Nếu bạn không quen với công thức phức tạp,
SUBTOTALlà lựa chọn an toàn.
8. Thực hành: Cách thực hiện từng bước
8.1. Sử dụng SUBTOTAL
- Chọn cột thứ tự: Giả sử cột A.
- Nhập công thức:
excel =SUBTOTAL(103, $B$2:B2) - Kéo công thức xuống: Kéo từınt A2 đến hết dữ liệu.
- Lọc dữ liệu: Sử dụng
Data -> Filtervà áp dụng điều kiện lọc. Số thứ tự sẽ tự động điều chỉnh.
8.2. Sử dụng AGGREGATE
- Chọn cột thứ tự: Giả sử cột A.
- Nhập công thức:
excel =AGGREGATE(15, 6, ROW($B$2:$B$100), 1) - Kéo công thức xuống.
- Ẩn dòng: Bạn có thể ẩn dòng bằng cách chọn dòng, nhấn chuột phải →
Hide.
8.3. Sử dụng VBA
- Mở VBA Editor:
ALT + F11. - Chèn module mới:
Insert > Module. - Dán macro: Dán mã từ phần 5.1.
- Chạy macro:
F5hoặc gắn vào nút.
9. Mẹo nhỏ để tránh lỗi
- Tránh ô trống: Khi nhập dữ liệu, hãy chắc chắn không để ô trống giữa các dòng, vì những ô trống này có thể làm sai số thứ tự.
- Sử dụng
OFFSET: Khi cần tính số thứ tự cho cột khác, sử dụngOFFSETthay choINDEX. - Kiểm tra dữ liệu khi lọc: Nếu dữ liệu có thể thay đổi, hãy kiểm tra lại công thức sau khi áp dụng bộ lọc.
- Sử dụng
Dynamic Named Range: Để tránh phải thay đổi phạm vi trong công thức, bạn có thể tạo một dynamic named range (OFFSET+COUNTA). - Chèn công thức vào cột bất kỳ: Bạn không nhất thiết phải đánh số trong cột đầu tiên. Bạn có thể đặt công thức trong bất kỳ cột nào, miễn là chọn đúng phạm vi.
10. Kết luận
Đánh số thứ tự trong Excel khi có dòng ẩn là một vấn đề thường gặp nhưng không phải là điều khó khăn quá nếu bạn biết cách áp dụng các công thức hoặc macro phù hợp. Bằng cách hiểu rõ các hàm SUBTOTAL, AGGREGATE, INDEX và SMALL, cùng với cách sử dụng VBA khi cần thiết, bạn sẽ có thể duy trì dữ liệu đánh số chính xác, linh hoạt, và dễ dàng trong mọi tình huống lọc, ẩn hoặc xóa dòng. Hãy thử áp dụng các phương pháp trên vào công việc hàng ngày của bạn và trải nghiệm sự tiện lợi mà chúng mang lại.

Tiến sĩ Lê Thống Nhất sinh năm 1955 tại Nghệ An, là nhà giáo, nhà báo và doanh nhân trong lĩnh vực giáo dục. Ông từng giảng dạy Toán học tại Trường THPT Chuyên Phan Bội Châu và đảm nhiệm nhiều vai trò trong ngành giáo dục, từ viết sách, biên soạn tài liệu đến sáng lập các dự án hỗ trợ học tập trực tuyến.
Ông là người sáng lập BigSchool – nền tảng giáo dục trực tuyến kết nối giáo viên và học sinh cả nước. Ngoài ra, ông còn nổi tiếng với vai trò tác giả, diễn giả truyền cảm hứng và khách mời trên nhiều chương trình truyền hình, trong đó có “Ai là triệu phú” trên truyền hình VTV.
Trong suốt sự nghiệp, Tiến sĩ Lê Thống Nhất đã nhận nhiều giải thưởng giáo dục và được biết đến như một người luôn đổi mới, ứng dụng công nghệ vào dạy và học, góp phần lan tỏa tri thức và niềm say mê học tập cho thế hệ trẻ.
