Có thể bạn quan tâm: Cách Sao Chép Giá Trị (copy Value Only) Trong Excel: Hướng Dẫn Chi Tiết Và Thực Hành
Mở đầu
Excel là một trong những công cụ mạnh mẽ nhất trong bộ phần mềm văn phòng, giúp người dùng thực hiện các thao tác xử lý dữ liệu nhanh chóng và hiệu quả. Trong quá trình làm việc, chúng ta thường gặp nhu cầu sao chép (copy) dữ liệu theo một thứ tự ngược lại, tức là đảo ngược danh sách hoặc dải ô. Việc này không chỉ giúp chuẩn bị dữ liệu cho các báo cáo, phân tích mà còn hữu ích trong việc tạo các danh sách ngẫu nhiên, sắp xếp lại thứ tự công việc, hay thậm chí là tạo các bài kiểm tra trắc nghiệm.
Bài viết dưới đây sẽ cung cấp cho bạn hướng dẫn chi tiết, từng bước một, từ cách thực hiện nhanh chóng bằng các phím tắt, công cụ có sẵn trong Excel, đến việc sử dụng công thức và VBA (Macro) cho những trường hợp phức tạp hơn. Bạn sẽ học được:
- Cách copy đảo ngược nhanh bằng tính năng Sort.
- Sử dụng công thức (INDEX, ROW, COUNTA, OFFSET…) để tạo danh sách đảo ngược.
- Áp dụng Power Query để đảo ngược dữ liệu.
- Viết macro VBA đơn giản để tự động hoá quá trình.
- Các lưu ý, mẹo tối ưu và lỗi thường gặp.
Hãy cùng khám phá chi tiết từng phương pháp để bạn có thể lựa chọn cách phù hợp nhất với nhu cầu và môi trường làm việc của mình.
Có thể bạn quan tâm: Cách Copy Khi Lọc Trong Excel: Hướng Dẫn Chi Tiết Từ Cơ Bản Đến Nâng Cao
1. Copy Đảo Ngược Bằng Tính Năng Sort (Sắp Xếp)
1.1. Khi nào nên dùng Sort?
- Dữ liệu đã có sẵn trong một cột hoặc một dải ô.
- Không cần giữ nguyên công thức gốc, chỉ muốn sao chép giá trị.
- Dải dữ liệu không quá lớn (vài nghìn hàng), vì Sort sẽ thay đổi vị trí thực tế của dữ liệu.
1.2. Các bước thực hiện
| Bước | Mô tả | Hình ảnh (mô tả) |
|---|---|---|
| 1 | Chọn dải ô cần đảo ngược (ví dụ: A2:A20). | – |
| 2 | Thêm cột phụ trợ (cột B) và nhập công thức =ROW() vào B2, kéo xuống tới B20. Điều này tạo ra một chuỗi số thứ tự tăng dần. | – |
| 3 | Chọn cả hai cột (A và B). | – |
| 4 | Vào Data → Sort. Chọn Sort by là cột B, Order là Largest to Smallest (lớn đến bé). Nhấn OK. | – |
| 5 | Xóa cột phụ trợ (cột B) nếu không cần. | – |
| 6 | Copy dải dữ liệu đã được đảo ngược (A2:A20) và Paste ở vị trí mới (ví dụ: C2:C20). | – |
1.3. Giải thích nhanh
- Hàm
ROW()trả về số thứ tự dòng hiện tại, tạo ra một cột chỉ số. - Khi sắp xếp giảm dần theo cột chỉ số, các hàng sẽ được đảo ngược.
- Vì Sort thay đổi vị trí thực tế, dữ liệu gốc sẽ bị thay đổi; do đó nếu muốn giữ nguyên dữ liệu gốc, bạn nên sao chép dữ liệu sang một vị trí tạm thời trước khi thực hiện.
1.4. Lưu ý
- Nếu dải dữ liệu có tiêu đề, hãy bỏ qua tiêu đề khi tạo cột chỉ số, hoặc sử dụng tùy chọn My data has headers trong hộp thoại Sort.
- Khi dải dữ liệu có công thức tham chiếu tới các ô khác, việc Sort có thể làm công thức bị lỗi. Đối với trường hợp này, nên sử dụng công thức trong phần 2 hoặc VBA.
Có thể bạn quan tâm: Copy Giữ Nguyên Định Dạng Trong Excel: Hướng Dẫn Chi Tiết Và Các Mẹo Thủ Thuật
2. Sử Dụng Công Thức Đảo Ngược (Formula-Based)
2.1. Khi nào dùng công thức?
- Cần giữ nguyên dữ liệu gốc và chỉ tạo một bản sao đảo ngược.
- Dữ liệu được cập nhật thường xuyên, cần tự động thay đổi khi dữ liệu gốc thay đổi.
- Muốn tránh thao tác thủ công và có thể kéo công thức cho các dải lớn.
2.2. Công thức cơ bản với INDEX và ROW
Giả sử dữ liệu gốc nằm trong cột A, từ A2 đến A20.
- Ở ô B2, nhập công thức:
excel =INDEX($A$2:$A$20, COUNTA($A$2:$A$20) - ROW() + 2)
- Kéo công thức xuống tới B20.
Giải thích công thức
COUNTA($A$2:$A$20)trả về số lượng ô không rỗng trong dải, tức là số dòng dữ liệu (ở đây là 19).ROW()trả về số thứ tự dòng hiện tại (B2 => 2, B3 => 3,…).COUNTA(...) - ROW() + 2tính vị trí ngược lại trong dải A2:A20.INDEXlấy giá trị tại vị trí này.
2.3. Công thức với OFFSET
Nếu bạn không muốn dùng COUNTA, có thể dùng ROWS để tính số dòng:
=OFFSET($A$2, ROWS($A$2:$A$20)-ROW()+1-1, 0)
Giải thích:
ROWS($A$2:$A$20)trả về tổng số dòng (19).ROW()trả về số dòng hiện tại trong cột B.OFFSET($A$2, …, 0)di chuyển từ ô A2 xuống một số dòng tính được.
2.4. Công thức cho dải dữ liệu có tiêu đề
Nếu A1 là tiêu đề, dữ liệu từ A2 trở xuống, và bạn muốn tạo danh sách đảo ngược bắt đầu từ C2:
=IFERROR(INDEX($A$2:$A$1000, COUNTA($A$2:$A$1000)-ROW()+2),"")
IFERRORgiúp bỏ qua các ô trống khi dải dữ liệu ngắn hơn 1000.
2.5. Sử dụng SORTBY (Excel 365/2026)
Với phiên bản Excel hỗ trợ hàm SORTBY, việc đảo ngược trở nên cực kỳ đơn giản:
=SORTBY(A2:A20, ROW(A2:A20), -1)
ROW(A2:A20)trả về mảng các số thứ tự dòng.- Tham số
-1chỉ định sắp xếp giảm dần (đảo ngược).
2.6. Ưu nhược điểm của công thức
| Ưu điểm | Nhược điểm |
|---|---|
| Tự động cập nhật khi dữ liệu gốc thay đổi. | Cần hiểu công thức, có thể gây lỗi nếu dải thay đổi (cần điều chỉnh tham chiếu). |
| Không làm thay đổi dữ liệu gốc. | Khi dải dữ liệu lớn, công thức có thể làm chậm Excel. |
| Dễ dàng sao chép và áp dụng cho nhiều cột. | Một số hàm (SORTBY) chỉ khả dụng trong Excel 365/2026 trở lên. |
3. Đảo Ngược Dữ Liệu Bằng Power Query
3.1. Khi nào nên dùng Power Query?

Có thể bạn quan tâm: Hướng Dẫn Copy Sheet Trong Excel: Từ Cơ Bản Đến Nâng Cao
- Xử lý dữ liệu lớn (hàng chục, hàng trăm nghìn) mà công thức có thể làm chậm.
- Cần lưu trữ quy trình (query) để tái sử dụng hoặc chia sẻ.
- Dữ liệu được nhập từ nguồn ngoài (CSV, database) và cần xử lý trước khi đưa vào sheet.
3.2. Các bước thực hiện
- Chọn dải dữ liệu (hoặc bảng) cần đảo ngược.
- Vào Data → From Table/Range (hoặc Get Data → From Table/Range). Đảm bảo dữ liệu đã được chuyển thành Table.
- Trong Power Query Editor, chọn Add Column → Index Column → From 0. (Tạo cột chỉ số bắt đầu từ 0).
- Sort cột Index Descending (giảm dần) bằng cách nhấp vào mũi tên trên tiêu đề cột và chọn Sort Descending.
- Nếu muốn xóa cột Index, chọn cột và Remove Columns.
- Nhấn Close & Load để đưa dữ liệu đã đảo ngược trở lại Excel (trong một sheet mới hoặc vị trí bạn chọn).
3.3. Lưu ý khi dùng Power Query
- Refresh: Khi dữ liệu gốc thay đổi, chỉ cần Refresh query để danh sách đảo ngược tự động cập nhật.
- Performance: Power Query hoạt động tốt với dữ liệu lớn vì nó thực hiện xử lý trong bộ nhớ riêng, không gây lag cho bảng tính chính.
- Không thay đổi dữ liệu gốc: Dữ liệu gốc vẫn ở nguyên vị trí, query tạo một bản sao mới.
4. Tự Động Hóa Với VBA (Macro)
4.1. Khi nào nên viết macro?
- Bạn cần thực hiện nhiều lần việc sao chép đảo ngược (ví dụ: hàng ngày, hàng tuần).
- Dải dữ liệu không cố định (số dòng thay đổi) và bạn muốn macro tự động xác định kích thước.
- Muốn tạo nút bấm trên sheet để người dùng không cần hiểu công thức.
4.2. Mã VBA đơn giản
Sub CopyReverse() Dim srcRng As Range, dstRng As Range Dim lastRow As Long, i As Long '--- Đặt nguồn và đích (thay đổi theo nhu cầu) --- Set srcRng = ThisWorkbook.Worksheets("Sheet1").Range("A2:A20") Set dstRng = ThisWorkbook.Worksheets("Sheet1").Range("C2") '--- Xác định số dòng thực tế (bỏ qua ô trống) --- lastRow = srcRng.Rows.Count '--- Vòng lặp sao chép đảo ngược --- For i = 1 To lastRow dstRng.Offset(i - 1, 0).Value = srcRng.Cells(lastRow - i + 1, 1).Value Next i MsgBox "Copy đảo ngược hoàn tất!", vbInformation
End Sub
Giải thích
srcRnglà dải dữ liệu gốc (có thể thay đổi thànhRange("A:A")và dùngEnd(xlUp)để tự động tìm dòng cuối).dstRnglà ô đầu tiên của dải đích.- Vòng
Forlặp từ 1 đến số dòng, mỗi lần lấy giá trị từ cuối dải (lastRow - i + 1) và ghi vào vị trí tương ứng ở dải đích.
4.3. Macro nâng cao: Tự động xác định dải nguồn và đích
Sub CopyReverseDynamic() Dim ws As Worksheet Dim srcCol As Long, dstCol As Long Dim lastRow As Long, i As Long Set ws = ThisWorkbook.Worksheets("Sheet1") srcCol = 1 'Cột A là nguồn dstCol = 3 'Cột C là đích 'Xác định dòng cuối cùng có dữ liệu trong cột nguồn lastRow = ws.Cells(ws.Rows.Count, srcCol).End(xlUp).Row 'Xóa dữ liệu cũ ở cột đích (nếu có) ws.Columns(dstCol).ClearContents 'Sao chép đảo ngược For i = 2 To lastRow 'Bắt đầu từ dòng 2 nếu dòng 1 là tiêu đề ws.Cells(i, dstCol).Value = ws.Cells(lastRow - i + 2, srcCol).Value Next i MsgBox "Đã sao chép đảo ngược từ cột " & Split(Cells(1, srcCol).Address, "$")(1) & _ " sang cột " & Split(Cells(1, dstCol).Address, "$")(1), vbInformation
End Sub
- Sử dụng
End(xlUp)để tự động tìm dòng cuối cùng. - Xóa nội dung cột đích trước khi sao chép để tránh dữ liệu cũ còn lại.
4.4. Thêm nút bấm trên Sheet
- Developer → Insert → Button (Form Control).
- Vẽ nút trên sheet, sau đó gán macro
CopyReverseDynamic. - Đổi tên nút thành “Copy Đảo Ngược”.
Giờ người dùng chỉ cần nhấn nút là hoàn thành.
4.5. Lưu ý khi dùng VBA
- Bảo mật macro: Khi lưu file, chọn định dạng .xlsm để giữ macro.
- Tắt cảnh báo: Nếu muốn chạy macro mà không có thông báo, có thể dùng
Application.DisplayAlerts = False(nhưng nhớ bật lại sau). - Kiểm tra lỗi: Thêm
On Error GoTo ErrHandlerđể xử lý trường hợp không có dữ liệu.
5. So Sánh Các Phương Pháp
| Phương pháp | Ưu điểm | Nhược điểm | Khi nào nên dùng |
|---|---|---|---|
| Sort + Cột phụ trợ | Nhanh, không cần công thức | Thay đổi vị trí dữ liệu gốc | Dữ liệu tạm thời, muốn sao chép nhanh |
| Công thức (INDEX/ROW) | Giữ nguyên dữ liệu, tự động cập nhật | Cần hiểu công thức, có thể chậm với dữ liệu lớn | Cần bản sao luôn đồng bộ, không muốn dùng macro |
| SORTBY (Excel 365) | Rất ngắn gọn, tự động | Chỉ có trong Excel mới | Người dùng Office 365, muốn cách nhanh nhất |
| Power Query | Xử lý lớn, lưu lại quy trình | Cần học cách dùng Power Query | Dữ liệu lớn, quy trình lặp lại, chia sẻ |
| VBA Macro | Tự động hoá hoàn toàn, có thể gán nút | Cần bật macro, viết code | Nhiệm vụ lặp lại, người dùng không muốn thao tác thủ công |
6. Các Trường Hợp Thực Tế
6.1. Đảo ngược danh sách tên sinh viên để tạo nhóm ngẫu nhiên
- Nhập danh sách vào cột A.
- Thêm cột B với
=RAND()và Sort Descending theo cột B → danh sách ngẫu nhiên. - Copy đảo ngược danh sách ngẫu nhiên bằng công thức
=INDEX($A$2:$A$100, COUNTA($A$2:$A$100)-ROW()+2)để tạo thứ tự ngược lại nếu cần.
6.2. Đảo ngược dữ liệu thời gian (ngày tháng)
- Khi dữ liệu ngày tháng được sắp xếp tăng dần, dùng Sort Descending để đảo ngược.
- Nếu muốn giữ ngày gốc và tạo bản sao, dùng công thức
=INDEX($B$2:$B$50, ROWS($B$2:$B$50)-ROW()+2).
6.3. Đảo ngược các giá trị trong một bảng pivot
- Tạo một cột phụ trợ trong nguồn dữ liệu gốc, rồi refresh pivot. Pivot sẽ tự động hiển thị theo thứ tự mới.
6.4. Tạo danh sách “đảo ngược” cho câu hỏi trắc nghiệm
- Giả sử câu hỏi trong cột A, đáp án trong cột B. Sử dụng Power Query để đảo ngược cả hai cột cùng lúc, giúp tạo bộ đề “ngược” một cách nhanh chóng.
7. Mẹo Tối Ưu Và Tránh Lỗi
- Luôn sao lưu dữ liệu trước khi thực hiện Sort hoặc VBA để tránh mất mát.
- Khi dùng công thức, kiểm tra định dạng ô (text, number) để tránh lỗi hiển thị.
- Nếu dữ liệu có hàng trống trong dải, dùng
IFERRORhoặcIFđể bỏ qua. - Refresh Power Query sau khi thay đổi nguồn dữ liệu; nếu không, danh sách sẽ không cập nhật.
- Tránh dùng
Copy-Pastethủ công cho dải lớn; thay vào đó dùng VBA hoặc Power Query để giảm thời gian và lỗi.
8. Kết luận
Việc copy đảo ngược trong Excel không còn là một thao tác khó khăn nếu bạn biết các công cụ và kỹ thuật phù hợp. Từ cách nhanh nhất bằng Sort, công thức linh hoạt, Power Query mạnh mẽ, cho tới macro VBA tự động, mỗi phương pháp đều có ưu và nhược điểm riêng, phù hợp với từng hoàn cảnh công việc.
- Đối với người dùng mới hoặc công việc đơn giản, hãy bắt đầu với Sort + cột phụ trợ hoặc công thức INDEX.
- Khi dữ liệu lớn hoặc cần lưu quy trình, Power Query là lựa chọn tối ưu.
- Nếu công việc lặp lại thường xuyên, hãy đầu tư thời gian viết macro VBA và gán vào nút bấm để tăng năng suất.
Hy vọng bài viết này đã cung cấp cho bạn đầy đủ kiến thức và công cụ để thực hiện mọi yêu cầu sao chép đảo ngược trong Excel một cách nhanh chóng, chính xác và hiệu quả. Hãy thử áp dụng ngay vào công việc hằng ngày và chia sẻ kinh nghiệm của bạn với đồng nghiệp!
Chúc bạn thành công và làm việc hiệu quả hơn với Excel!

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ẻ.
