Sắp xếp họ tên theo thứ tự Alphabet (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

Tôi tự qui định như sau:

1. Phân biệt chữ hoa chữ thường. Thứ tự tăng dần như sau:
a, à, ả, ã, á, ạ, ă, ằ, ẳ, ẵ, ắ, ặ, â, ầ, ẩ, ẫ, ấ, ậ, b, c, d, đ, e, è, ẻ, ẽ, é, ẹ, ê, ề, ể, ễ, ế, ệ, f, g, h, i, ì, ỉ, ĩ, í, ị, j, k, l, m, n, o, ò, ỏ, õ, ó, ọ, ô, ồ, ổ, ỗ, ố, ộ, ơ, ờ, ở, ỡ, ớ, ợ, p, q, r, s, t, u, ù, ủ, ũ, ú, ụ, ư, ừ, ử, ữ, ứ, ự, v, w, x, y, ỳ, ỷ, ỹ, ý, ỵ, z, A, À, Ả, Ã, Á, Ạ, Ă, Ằ, Ẳ, Ẵ, Ắ, Ặ, Â, Ầ, Ẩ, Ẫ, Ấ, Ậ, B, C, D, Đ, E, È, Ẻ, Ẽ, É, Ẹ, Ê, Ề, Ể, Ễ, Ế, Ệ, F, G, H, I, Ì, Ỉ, Ĩ, Í, Ị, J, K, L, M, N, O, Ò, Ỏ, Õ, Ó, Ọ, Ô, Ồ, Ổ, Ỗ, Ố, Ộ, Ơ, Ờ, Ở, Ỡ, Ớ, Ợ, P, Q, R, S, T, U, Ù, Ủ, Ũ, Ú, Ụ, Ư, Ừ, Ử, Ữ, Ứ, Ự, V, W, X, Y, Ỳ, Ỷ, Ỹ, Ý, Ỵ, Z

2. Không phân biệt chữ hoa chữ thường. Thứ tự tăng dần như sau:
a, A, À, à, ả, Ả, Ã, ã, Á, á, Ạ, ạ, ă, Ă, Ằ, ằ, ẳ, Ẳ, Ẵ, ẵ, Ắ, ắ, ặ, Ặ, Â, â, ầ, Ầ, ẩ, Ẩ, Ẫ, ẫ, Ấ, ấ, Ậ, ậ, B, b, c, C, d, D, Đ, đ, e, E, è, È, Ẻ, ẻ, Ẽ, ẽ, É, é, ẹ, Ẹ, ê, Ê, Ề, ề, ể, Ể, ễ, Ễ, ế, Ế, ệ, Ệ, F, f, G, g, h, H, I, i, Ì, ì, Ỉ, ỉ, ĩ, Ĩ, í, Í, Ị, ị, j, J, K, k, L, l, M, m, n, N, o, O, Ò, ò, ỏ, Ỏ, õ, Õ, ó, Ó, Ọ, ọ, ô, Ô, Ồ, ồ, ổ, Ổ, ỗ, Ỗ, ố, Ố, Ộ, ộ, Ơ, ơ, ờ, Ờ, ở, Ở, ỡ, Ỡ, Ớ, ớ, Ợ, ợ, P, p, q, Q, r, R, s, S, T, t, U, u, ù, Ù, ủ, Ủ, Ũ, ũ, ú, Ú, Ụ, ụ, ư, Ư, Ừ, ừ, ử, Ử, ữ, Ữ, Ứ, ứ, Ự, ự, V, v, w, W, x, X, Y, y, ỳ, Ỳ, ỷ, Ỷ, ỹ, Ỹ, Ý, ý, Ỵ, ỵ, Z, z

Lưu ý:
- Thứ tự a, A, À, à không có nghĩa là a < A hoặc À < à. Ta luôn có a = A, à = À. Tức nếu dữ liệu có theo thứ tự a, A (à, À) hay A, a (À, à) thì sau khi sắp xếp thứ tự y nguyên như trước lúc sắp xếp.
- Tôi mặc định là d < đ, D < Đ.
- Với mỗi chữ cái thì tôi mặc định thứ tự với các dấu thanh là: không dấu, dấu huyền, dấu hỏi, dấu ngã, dấu sắc, dấu nặng.
- Trong Module1 có sub test để sắp xếp cho ví dụ dữ liệu của bạn - kết quả ở K9:N14. Bạn cũng có thể đập kết quả vào lại B2:E7
Dữ liệu đầu vào (cần sắp xếp) lấy từ B2:E7. Sắp xếp theo 3 cột theo thứ tự: cột 4 (tên), cột 2 (họ), cột 3 (họ lót). Cả 3 cột đều mã hóa, đều không phân biệt chữ hoa chữ thường, và cả 3 cột đều là unicode.
Mã:
Sub test()
Dim arr(), arrindex
    arr = Sheet1.Range("B2:E7").Value
    arr = Sort2DArray(arr, arrindex, 4, True, cc_uni, False, 2, True, cc_uni, False, 3, True, cc_uni, False)
    Sheet1.Range("K9").Resize(UBound(arr), UBound(arr, 2)).Value = arr
End Sub
- tham số thứ 2 trong Sort2DArray - arrindex. Hồi xưa tôi định làm thêm 1 việc nên tôi cần arrindex. Sau đó tôi không muốn làm nữa nhưng lười không muốn sửa lại code Sort2DArray. Để lại arrindex thì chỉ thừa thôi chứ không gây hại gì.
- trong module vietnamese_convert có hàm SourceToDest dùng để chuyển qua lại giữa unicode, VNI, TCVN3 với nhau.
----------------
Về sắp xếp tiếng Việt tôi cũng đã viết trên GPE. Bạn có thể dùng công cụ tìm kiếm của GPE để tìm và tham khảo thêm. Nhập từ khóa Sort2DArray, mục Bởi thì nhập siwtom.
--------------
Tôi viết những cái này từ 6, 7, 8 năm trước. Lúc đó là do muốn chơi thôi chứ trong đời tôi không làm gì cần tới Excel, không cần tới lập trình, dù là VB, VBA hay Delphi. Bây giờ tôi không ham nữa. Nếu bạn có nhu cầu thêm thắt gì thì tự làm. Tôi không làm gì nữa. Hồi trước sau khi viết xong code sắp xếp tối đa theo 3 cột thì tôi định viết code sắp xếp với số cột tùy ý. Nhưng rồi lười. Tính tôi ham chơi nhưng chóng chán.
Mình có nhận được rồi, nhưng dùng lệnh gì cho nó chạy vậy bạn
 
Mình có nhận được rồi, nhưng dùng lệnh gì cho nó chạy vậy bạn
Tôi là người luôn cầm tay dẫn đi, viết chi tiết nhất GPE.

Trích bài 19
- Trong Module1 có sub test để sắp xếp cho ví dụ dữ liệu của bạn - kết quả ở K9:N14. Bạn cũng có thể đập kết quả vào lại B2:E7
Dữ liệu đầu vào (cần sắp xếp) lấy từ B2:E7. Sắp xếp theo 3 cột theo thứ tự: cột 4 (tên), cột 2 (họ), cột 3 (họ lót). Cả 3 cột đều mã hóa, đều không phân biệt chữ hoa chữ thường, và cả 3 cột đều là unicode.
--------------------
Vd.:
1. chọn thẻ Developer -> nút Insert (ở mục Controls) -> chọn Button ở phần Form Controls -> vẽ 1 hình chữ nhật nhỏ trên sheet -> ở cửa sổ Assign Macro chọn test -> click để chọn test -> nút New tự chuyển thành Edit -> nhấn OK -> ô nào đó trên sheet -> xóa cột K:N -> nhấn Button 1 để chạy macro test.

2. Nhấn Alt + F11 để vào VBE -> click đâu đó giữa Sub test và End Sub -> chọn menu Run -> Run Sub/UserForm. Thay cho chọn 2 Run thì có thể nhấn phím F5.

Hãy đọc kỹ bài 19 để biết dữ liệu cần sắp xếp lấy từ đâu, các cột cần sắp xếp theo tiêu chí nào v...v.
 
Tôi là người luôn cầm tay dẫn đi, viết chi tiết nhất GPE.

Trích bài 19

--------------------
Vd.:
1. chọn thẻ Developer -> nút Insert (ở mục Controls) -> chọn Button ở phần Form Controls -> vẽ 1 hình chữ nhật nhỏ trên sheet -> ở cửa sổ Assign Macro chọn test -> click để chọn test -> nút New tự chuyển thành Edit -> nhấn OK -> ô nào đó trên sheet -> xóa cột K:N -> nhấn Button 1 để chạy macro test.

2. Nhấn Alt + F11 để vào VBE -> click đâu đó giữa Sub test và End Sub -> chọn menu Run -> Run Sub/UserForm. Thay cho chọn 2 Run thì có thể nhấn phím F5.

Hãy đọc kỹ bài 19 để biết dữ liệu cần sắp xếp lấy từ đâu, các cột cần sắp xếp theo tiêu chí nào v...v.
Vâng, cám ơn bạn rất nhiều, chỉ dẫn rất chi tiết....Thank you very much./.
 
Web KT

Bài viết mới nhất

Back
Top Bottom