#3 Sắp xếp danh sách trong Ms Excel
Xin chào!
Trong Microsoft Excel, việc sắp xếp danh sách theo thứ tự bảng chữ cái bằng tiếng Anh là ổn, nhưng liệu chức năng này có khả dụng nếu danh sách đó bằng ngôn ngữ khác ngoài tiếng Anh (ví dụ: tiếng Nepal/tiếng Hindi) không?
Cảm ơn!
Trả lời:
Chào bạn! Trong Microsoft Excel, việc sắp xếp danh sách theo thứ tự bảng chữ cái bằng tiếng Anh là được, nhưng liệu chức năng này có khả dụng nếu danh sách đó bằng ngôn ngữ khác ngoài tiếng Anh (ví dụ: tiếng Nepal/tiếng Hindi) không?
Cảm ơn!
Trả lời:
Trong Microsoft Excel, việc sắp xếp danh sách theo thứ tự bảng chữ cái bằng tiếng Anh là ổn, nhưng liệu chức năng này có khả dụng nếu danh sách đó bằng ngôn ngữ khác ngoài tiếng Anh (ví dụ: tiếng Nepal/tiếng Hindi) không?
Nếu bạn sử dụng hệ thống tiếng Anh thì không, thứ tự sắp xếp được quy định bởi ngôn ngữ (hoặc cài đặt) của hệ điều hành.
Bạn có thể tự tạo thứ tự sắp xếp riêng, nhưng việc đó khá phức tạp và đòi hỏi bạn phải có kinh nghiệm về VBA và sắp xếp nói chung.
Ý tưởng cơ bản là tạo một bảng ánh xạ (bất kỳ thuật toán sắp xếp nào cũng có thể làm được điều đó!) và mã hóa một chuỗi thành các số, sau đó sắp xếp theo các số này thay vì chuỗi gốc...
Ví dụ: Nếu bạn sắp xếp "a,b,c,A,B,C" theo thứ tự tăng dần, bạn sẽ nhận được "a,A,b,B,c,C".
Giá trị ASCII của A là 65 và của a là 97, vì vậy nếu Excel sắp xếp theo giá trị ASCII thì kết quả sẽ là "A,B,C,a,b,c".
Câu hỏi đặt ra là Excel làm điều đó như thế nào? Câu trả lời rất đơn giản (để đơn giản hóa cho ví dụ này):
Chữ "a" trở thành 1, chữ "A" trở thành 2, v.v.
Vì vậy, Excel ánh xạ từng ký tự vào bảng này và cuối cùng sắp xếp theo các số này.
Nhưng trên thực tế, các bảng này lớn hơn nhiều, một bảng ký tự Unicode có 65.535 ký tự.
Quay lại ví dụ: Từ "Abc" trở thành 235 và "aBc" trở thành 145, và nếu bạn sắp xếp các từ này theo thứ tự tăng dần, bạn sẽ nhận được "aBc, Abc".
Vậy thôi. Không dễ thực hiện, thực sự khó khăn, nhưng hoàn toàn có thể.
Andreas.
Comments
Post a Comment