chibi đã viết:
Có ai biết Excel sắp xếp dữ liệu qua chức năng Sort như thế nào không?
Mình cũng chưa từng xem tài liệu nào nói vấn đề này, những gì nêu dưới đây chỉ là kinh nghiệm, có thể sai !
A. Sắp xếp trong 1 cột:
Trật tự sắp xếp từ nhỏ đến lớn (
Ascending):
1. Số
2. Dấu -
3. Khoảng trắng
4. Các ký tự không phải là chữ cái trên bàn phím (~ ! @ # $ ...)
5. Chữ cái A-Z (cùng chữ cái : chữ hoa trước chữ thường)
6. 2 ô giống nhau thì ô nào trước khi xếp ở trên, sau khi xếp cũng ở trên.
Nếu sắp xếp
Descending thì theo thứ tự ngược lại.
Khi sắp xếp, tùy loại dữ liệu:
Số: số từ nhỏ đến lớn
Chuỗi: xếp theo từng ký tự từ bên trái sang phải.
Chú ý trường hợp giá trị là số nhưng Excel xem như chuỗi (text) do dùng các hàm chuỗi tách số từ 1 chuỗi (dùng hàm LEFT, RIGHT, MID, ...) hoặc dùng ký tự định dạng như '100 thì Excel xếp như chuỗi. Ví dụ xếp chuỗi số từ 1 đến 20 thì Excel xếp 1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2, 20, 3, 4, 5, 6, 7, 8, 9
B. Sắp xếp nhiều cột (tối đa 3 cột):
1. Sắp xếp cột
Sort by trước.
2. Những ô có dữ liệu giống nhau sau khi sắp xếp
Sort by, sắp xếp theo
Then by đầu tiên.
3. Những ô có dữ liệu giống nhau sau khi sắp xếp
Sort by,
Then by đầu tiên, sắp xếp theo
Then by cuối cùng.
Trên đây chỉ xét đến số, ký tự trên bàn phím. Không xét đến các ký tự tiếng Việt, ký tự khác nhập vào bằng Insert Symbol hoặc tổ hợp phím Alt+phím số vì thứ tự không theo quy luật nào.
Còn về thuật toán, tôi cũng xây dựng giống như anhtuan1066. Khi so sánh 2 giá trị với nhau, Excel so sánh bằng các toán tử >, <, = để xem giá trị nào xếp trên, xếp dưới. Nếu là số thì so sánh theo giá trị, nếu là chuỗi thì so sánh 2 chuỗi theo trật tự sắp xếp ABC (không cần tách từng ký tự để so sánh). Từ đó quyết định xếp trên hoặc dưới. Ví dụ xếp từ nhỏ đến lớn
(Ascending):
100 > 123 cho kết quả FALSE. Xếp 100, 123
"A" > 123 cho kết quả TRUE. Xếp 123, "A"
"ABC" > "AACZ" cho kết quả TRUE. Xếp "AACZ", "ABC"