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

Nguyễn Hồng Lam

Thành viên hoạt động
Tham gia
7/12/17
Bài viết
131
Được thích
35
Chào mọi người, hiện tại mình có vấn đề là khi sắp xếp họ tên.
=> Đầu tiên mình tách chuỗi họ tên => cột họ, họ lót và tên.
=> Thực hiện sắp xếp => kết quả như bên trái - đây là kết quả không mong muốn....Nếu sắp xếp đúng => kết quả như bên phải
* Mọi người có cách nào giúp mình với (có đính kèm file)

1599808010174.png
 

File đính kèm

Bạn khởi động lại máy tính.
Thử trên máy tính khác.
Hiện tại mình đang dùng Win 10 64bit 2H2. Trước đây, mình dùng win 7 trờ xuống thì ko có vấn đề này. Nhưng từ khi dùng hệ 10 này thì lỗi này lại xuất hiện. Nó nhọc nhằng giữa tiếng Việt và tiếng Anh nên khi sắp xếp nó không theo ý muốn nơi...Đôi khi mình phải copy bỏ dấu, dùng code rồi sắp xếp thì mới được..khổ thiệt./.
Bài đã được tự động gộp:

Điều kiện sắp xếp cột tên lên trên đầu sẽ thỏa được yêu cầu?
Mình làm rồi bạn, nhưng lỗi vẫn xuất hiện không mong muốn./.
 
Bạn khởi động lại máy tính.
Thử trên máy tính khác.
Hình như thớt muốn sort tên trước họ. Chỉ dẫn của bạn là sort họ trước tên.
Riêng cái vụ Đ đi trước D, và Cx(o, u) đi trước Ch thì tôi không rõ có phải thớt muốn vậy không? Nếu muốn thì phải lập bảng riêng.
 
Hiện tại mình đang dùng Win 10 64bit 2H2. Trước đây, mình dùng win 7 trờ xuống thì ko có vấn đề này. Nhưng từ khi dùng hệ 10 này thì lỗi này lại xuất hiện. Nó nhọc nhằng giữa tiếng Việt và tiếng Anh nên khi sắp xếp nó không theo ý muốn nơi...Đôi khi mình phải copy bỏ dấu, dùng code rồi sắp xếp thì mới được..khổ thiệt./.
Bài đã được tự động gộp:


Mình làm rồi bạn, nhưng lỗi vẫn xuất hiện không mong muốn./.
Kết quả tôi làm như sau:

1599811796867.png
 
Chào mọi người, hiện tại mình có vấn đề là khi sắp xếp họ tên.
=> Đầu tiên mình tách chuỗi họ tên => cột họ, họ lót và tên.
=> Thực hiện sắp xếp => kết quả như bên trái - đây là kết quả không mong muốn....Nếu sắp xếp đúng => kết quả như bên phải
* Mọi người có cách nào giúp mình với (có đính kèm file)

View attachment 245364
Hiện Excel sắp xếp tiếng Việt có dấu chưa chuẩn
Nhưng ngay bài 1 thì kết quả mong muốn của chủ topic cũng lạ, không rõ theo quy luật nào
 
Hình như thớt muốn sort tên trước họ. Chỉ dẫn của bạn là sort họ trước tên.
Riêng cái vụ Đ đi trước D, và Cx(o, u) đi trước Ch thì tôi không rõ có phải thớt muốn vậy không? Nếu muốn thì phải lập bảng riêng.
Trong quy ước thì vẫn sắp xếp tên trước, họ sau bạn ạ. Khi sắp xếp thì không hiểu sao máy nó không tách các kí tự để mã hóa nó khi sắp xếp, nên vẫn có các lỗi Ti trước Th, hoặc Tu trước Th
Bài đã được tự động gộp:

Hiện Excel sắp xếp tiếng Việt có dấu chưa chuẩn
Nhưng ngay bài 1 thì kết quả mong muốn của chủ topic cũng lạ, không rõ theo quy luật nào
Đó là vấn đề mà hiện nay mình đang gặp đó bạn. Dữ liệu thì nhiều, mà khi sắp xếp thì theo vần thì kết quả không mong muốn./.
 
Nếu bạn phải sắp xếp liên tục thì đợi tôi soạn 1 module. Có khi phải sang ngày mai vì việc đòi hỏi phải có sự tập trung để tránh nhầm lẫn.
Sort của Excel trong trường hợp tổng quát không như ý (hồi xưa tôi đã có dữ liệu ví dụ nhưng lâu ngày quên rồi). Muốn chuẩn thì phải tự viết code chứ công cụ của Excel không đảm bảo.
 
Trong quy ước thì vẫn sắp xếp tên trước, họ sau bạn ạ. Khi sắp xếp thì không hiểu sao máy nó không tách các kí tự để mã hóa nó khi sắp xếp, nên vẫn có các lỗi Ti trước Th, hoặc Tu trước Th
Bài đã được tự động gộp:


Đó là vấn đề mà hiện nay mình đang gặp đó bạn. Dữ liệu thì nhiều, mà khi sắp xếp thì theo vần thì kết quả không mong muốn./.
Tôi thấy trước có diễn đàn có hàm sắp xếp tiếng việt ở đâu đó, bạn tìm xem
 
Nếu bạn phải sắp xếp liên tục thì đợi tôi soạn 1 module. Có khi phải sang ngày mai vì việc đòi hỏi phải có sự tập trung để tránh nhầm lẫn.
Sort của Excel trong trường hợp tổng quát không như ý (hồi xưa tôi đã có dữ liệu ví dụ nhưng lâu ngày quên rồi). Muốn chuẩn thì phải tự viết code chứ công cụ của Excel không đảm bảo.
Vâng, cái này mình dùng liên tục bạn ạ. Vì dữ liệu của mình nhiều và lớn mà...Vậy mình sẽ đợi bạn...
Bài đã được tự động gộp:

Tôi thấy trước có diễn đàn có hàm sắp xếp tiếng việt ở đâu đó, bạn tìm xem
Vậy à, vậy để mình tìm thử xem, thanks bạn nhé./.
 
Tôi nhớ hồi xưa mình làm thì dựng cột phụ:
- Thay thế ký tự 'h' ở vị trí thứ 2 thành 'x'
- Thay thế ký tự 'r' ở vị trí thứ 2 thành 'z'
- Thay thế 2 ký tự đầu 'Gi' thành 'Gz'
Sẽ sort ra t trước th và trước tr; c trước ch; k trước kh.
G trước Gh và trước Gi.
 
Vâng, cái này mình dùng liên tục bạn ạ. Vì dữ liệu của mình nhiều và lớn mà...Vậy mình sẽ đợi bạn...
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.
 

File đính kèm

Lần chỉnh sửa cuối:
Tôi nhớ hồi xưa mình làm thì dựng cột phụ:
- Thay thế ký tự 'h' ở vị trí thứ 2 thành 'x'
- Thay thế ký tự 'r' ở vị trí thứ 2 thành 'z'
- Thay thế 2 ký tự đầu 'Gi' thành 'Gz'
Sẽ sort ra t trước th và trước tr; c trước ch; k trước kh.
G trước Gh và trước Gi.
Cái này ít thì được nhưng dữ liệu lớn thì không thể làm được bạn ạ.
 
Web KT

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

Back
Top Bottom