Hướng dẫn

Sắp Xếp Dữ Liệu Với QUERY Order By Trong Google Sheets 2026

Tuân HoangTuân Hoang
11 tháng 8, 2026
Cập nhật: 20 tháng 8, 2026
8 phút đọc
Ảnh minh họa bài viết: Sắp Xếp Dữ Liệu Với QUERY Order By Trong Google Sheets 2026

ORDER BY trong QUERY khác gì với sắp xếp thông thường

Google Sheets có sẵn Data → Sort range, nhưng cách này sắp xếp cứng dữ liệu — mỗi lần dữ liệu gốc thay đổi, bạn phải sort lại thủ công. Mệnh đề order by trong hàm QUERY giải quyết vấn đề này bằng cách trả về kết quả đã sắp xếp động, tự cập nhật mỗi khi dữ liệu nguồn thay đổi.

Cú pháp cơ bản:

=QUERY(data, "select * order by C desc", 1)

Trong đó C là ký hiệu cột theo ngôn ngữ Query (A, B, C... tương ứng cột 1, 2, 3 trong vùng dữ liệu bạn chọn, không phải cột thật trên sheet). Đây là điểm nhiều người mới học nhầm — nếu vùng dữ liệu bắt đầu từ cột C trên sheet, thì trong Query nó vẫn được gọi là cột A. Nếu bạn chưa quen cú pháp Query nói chung, nên xem qua hướng dẫn QUERY toàn diện từ A-Z trước khi đi sâu vào order by.

Cú pháp order by đầy đủ và các biến thể

Sắp xếp tăng dần / giảm dần

Mặc định, order by sắp tăng dần (asc). Muốn giảm dần thêm desc:

  • order by B asc — A→Z hoặc số nhỏ→lớn (asc có thể bỏ, mặc định đã là asc)
  • order by B desc — Z→A hoặc số lớn→nhỏ

Sắp xếp nhiều cột cùng lúc

Đây là chỗ order by mạnh hơn hẳn Sort thủ công vì viết một dòng công thức là xong, không cần mở hộp thoại nhiều cấp:

=QUERY(A1:E500, "select A, B, D order by D desc, B asc", 1)

Công thức trên sắp theo doanh số (cột D) giảm dần trước, nếu trùng doanh số thì sắp theo tên (cột B) tăng dần làm tiêu chí phụ. Số cột trong order by không giới hạn, nhưng thực tế 2-3 cấp là đủ dùng cho hầu hết báo cáo.

Sắp xếp theo cột không có trong select

Một mẹo ít người biết: bạn có thể order by theo cột không xuất hiện trong danh sách select. Ví dụ chỉ muốn hiển thị tên và doanh thu, nhưng sắp theo ngày:

=QUERY(A1:E500, "select B, D order by E desc", 1)

Query vẫn hiểu và chạy đúng, miễn cột E nằm trong vùng dữ liệu bạn khai báo ở tham số đầu.

Kết hợp order by với where và limit — bộ ba xử lý báo cáo top N

Trong thực tế, order by hiếm khi đứng một mình. Bài toán phổ biến nhất: "lấy 10 khách hàng doanh thu cao nhất trong quý này". Công thức:

=QUERY(A1:E1000, "select B, D where C >= date '2026-04-01' order by D desc limit 10", 1)

Ở đây where lọc theo điều kiện trước, order by sắp xếp kết quả đã lọc, và limit cắt lấy N dòng đầu. Thứ tự logic xử lý luôn là: lọc → sắp xếp → giới hạn số dòng, dù bạn viết các mệnh đề theo thứ tự nào trong chuỗi lệnh (miễn tuân đúng cú pháp Query: select, where, group by, pivot, order by, limit, offset, label, format, options — theo đúng trình tự này).

Một lỗi hay gặp: viết limit trước order by sẽ báo lỗi cú pháp ngay. Query yêu cầu nghiêm ngặt thứ tự mệnh đề, khác với SQL chuẩn có thể linh hoạt hơn đôi chút.

Tình huốngCông thức mẫu
Top 5 sản phẩm bán chạyselect A, sum(C) group by A order by sum(C) desc limit 5
Bảng xếp hạng nhân viên theo doanh sốselect B, D order by D desc
Đơn hàng mới nhất lên đầuselect * order by A desc (A là cột ngày)

Lưu ý khi order by đi cùng group by: cột trong order by phải là cột đã xuất hiện trong select (thường là cột được group hoặc hàm tổng hợp như sum, count, avg), không thể order by theo cột thô chưa qua tổng hợp. Nếu bạn cần ôn lại cách viết group by kết hợp order by cho báo cáo tổng hợp, phần này được trình bày kỹ trong 15 cú pháp QUERY nâng cao.

Xử lý các lỗi order by thường gặp

Sắp xếp sai khi cột chứa số dạng text

Nếu cột doanh số được nhập từ hệ thống khác và lưu dưới dạng text (căn trái trong ô thay vì căn phải), order by sẽ sắp theo thứ tự ký tự (1, 10, 100, 2, 20...) thay vì thứ tự số học. Cách kiểm tra nhanh: bôi đen cột, nếu góc dưới bên phải Sheets không hiện SUM tự động thì khả năng cao dữ liệu đang là text. Cách sửa: dùng value() ngay trong Query hoặc nhân với 1 ở cột phụ trước khi query.

Ngày tháng không sắp đúng thứ tự

Tương tự số, nếu cột ngày bị import dưới dạng chuỗi văn bản (ví dụ "15/03/2026" kiểu Việt Nam thay vì định dạng ngày chuẩn của Sheets), order by sẽ sắp theo ký tự đầu tiên chứ không theo thời gian thực. Giải pháp an toàn nhất là dùng DATEVALUE để chuẩn hóa cột ngày trước khi đưa vào vùng dữ liệu cho Query.

Order by không có tác dụng khi dùng cùng pivot

Khi kết hợp pivot, order by chỉ sắp xếp được các dòng (row), không sắp được thứ tự cột được pivot ra — đây là giới hạn cố định của ngôn ngữ Query, không phải lỗi công thức. Nếu cần sắp cả trục cột, phải xử lý thêm ở bước sau bằng công thức khác hoặc sắp thủ công tiêu đề.

Dữ liệu trống (blank) bị đẩy lên đầu hoặc cuối bất thường

Query mặc định coi ô trống nhỏ hơn mọi giá trị, nên khi order by desc, các dòng trống sẽ rơi xuống cuối; khi asc, chúng nhảy lên đầu. Nếu báo cáo của bạn có nhiều ô trống xen kẽ, nên lọc bằng where B is not null trước khi order by để tránh gây rối bảng kết quả.

Ứng dụng thực tế: bảng xếp hạng tự động cập nhật cho quản lý bán hàng

Một tình huống phổ biến ở các cửa hàng, đại lý dùng Google Sheets quản lý đơn hàng: sếp muốn xem bảng xếp hạng nhân viên bán hàng theo tuần mà không cần ai đó ngồi sort lại mỗi sáng thứ Hai. Với order by, chỉ cần một công thức đặt ở tab riêng:

=QUERY(DonHang!A:F, "select B, sum(E) where C >= date '"&TEXT(TODAY()-7,"yyyy-mm-dd")&"' group by B order by sum(E) desc label sum(E) 'Doanh số tuần'", 1)

Công thức này tự động lấy dữ liệu 7 ngày gần nhất, gộp theo nhân viên, sắp giảm dần theo doanh số, và đổi tên cột kết quả cho dễ đọc. Đây chính xác là dạng bảng báo cáo mà các doanh nghiệp SME ở Việt Nam hay cần khi vận hành trên Google Sheets thay vì phần mềm quản lý chuyên dụng — và cũng là lý do các mẫu sheet dựng sẵn kiểu SheetStore thường tích hợp sẵn công thức order by này trong các template quản lý bán hàng, để người dùng không phải tự mò cú pháp.

Nếu bạn muốn mở rộng thêm, có thể lồng thêm ARRAYFORMULA hoặc IMPORTRANGE để kéo dữ liệu từ nhiều chi nhánh về một bảng xếp hạng chung — chi tiết cách phối hợp các hàm này được trình bày trong hướng dẫn ARRAYFORMULA, QUERY, IMPORTRANGE và Apps Script.

Hiệu năng: order by có làm chậm sheet không

Với vùng dữ liệu dưới khoảng 10.000-20.000 dòng, order by trong Query gần như không gây độ trễ đáng kể. Vấn đề chỉ xuất hiện khi:

  • Vùng dữ liệu tham chiếu là toàn bộ cột (ví dụ A:F thay vì A1:F5000) — Sheets phải quét hàng triệu ô trống
  • Kết hợp order by với nhiều lớp QUERY lồng nhau hoặc IMPORTRANGE từ nhiều file
  • Sheet có hàng trăm công thức Query chạy song song trên cùng một tab

Cách tối ưu đơn giản nhất: luôn giới hạn vùng dữ liệu theo số dòng thực tế cộng thêm biên độ dự phòng (ví dụ A1:F5000 thay vì A:F), và cân nhắc dùng cột phụ đánh dấu trạng thái để where lọc bớt trước khi order by phải xử lý.

Muốn tìm hiểu sâu hơn cách QUERY xử lý cùng lúc nhiều hàm nâng cao khác trong một hệ thống báo cáo, có thể tham khảo thêm hướng dẫn đầy đủ về hàm QUERY với các ví dụ ứng dụng theo ngành.

Câu hỏi thường gặp

Cú pháp ORDER BY trong hàm QUERY của Google Sheets như thế nào?

Cú pháp cơ bản là =QUERY(dữ_liệu, "SELECT * ORDER BY cột ASC/DESC"). Trong đó ASC là sắp xếp tăng dần (mặc định), DESC là giảm dần. Bạn chỉ định cột bằng ký hiệu chữ cái như Col1, Col2 tương ứng với thứ tự cột trong vùng dữ liệu đầu vào.

Có thể sắp xếp theo nhiều cột cùng lúc trong ORDER BY không?

Có, chỉ cần liệt kê nhiều cột cách nhau bằng dấu phẩy, ví dụ ORDER BY Col2 DESC, Col1 ASC. Google Sheets sẽ ưu tiên sắp xếp theo cột đầu tiên, nếu trùng giá trị mới xét đến cột tiếp theo, tương tự sắp xếp đa cấp trong Excel.

Tại sao ORDER BY trong QUERY không sắp xếp đúng như mong muốn?

Thường do định dạng dữ liệu không đồng nhất (số bị lưu dạng text, ngày tháng sai định dạng) hoặc do dùng sai ký hiệu cột. Hãy kiểm tra định dạng cột bằng ISNUMBER/ISTEXT và đảm bảo tham chiếu đúng Col theo thứ tự cột trong vùng dữ liệu gốc.

Kết hợp ORDER BY với LIMIT để lấy top N dữ liệu như thế nào?

Dùng cú pháp =QUERY(dữ_liệu, "SELECT * ORDER BY Col3 DESC LIMIT 10") để lấy 10 dòng có giá trị cao nhất ở cột 3. Cách này rất hữu ích khi cần lọc nhanh top khách hàng, top doanh thu mà không cần thêm công thức phụ.

Bạn muốn áp dụng ngay mà không phải tự xây từ đầu?

Khám phá các mẫu Google Sheets và phần mềm quản lý dựng sẵn cho doanh nghiệp Việt tại SheetStore Marketplace.

Chia sẻ bài viết:

Tuân Hoang

Tuân Hoang

Đội ngũ SheetStore

Google SheetsGoogle Apps ScriptCRMAutomationPhần mềm quản lý doanh nghiệp

Google Workspace Certified, 5+ years experience

Bạn thấy bài viết hữu ích?

Đăng ký nhận thông báo khi có bài viết mới.

Nhận thông báo khi có bài viết mới. Không spam, hứa luôn! 😊

Bình luận (0)

Vui lòng đăng nhập để tham gia thảo luận