Bạn có thể dùng Add-in mà bạn Cop_kh gửi tặng. Còn nếu không muốn dùng add-in cho lằng nhằng thì bạn có thể sử dụng cách đơn giản hơn nhiều:
1. Bạn nhập riêng cột họ lót và cột tên.
2. Bạn chọn hết bảng tính (không nên chọn cột số thứ tự).
3. Vào menu Data --> Sort --> Chọn cột tên (ví dụ cột C) --> Chọn Ascending --> Bấm nút kiểm Header Row (nếu khối bạn chọn có dòng tiêu đề) --> OK.
Còn nếu bạn đã nhập cột họ và tên chung thì bạn có thể dùng các công thức sau (Cái này mình tham khảo của 1 bạn trên diễn đàn - Xin lỗi vì ăn cắp bản quyền). Sau đó thì dùng chức năng Sort đã nói ở trên.
I>.TÁCH HỌ
1>. =LEFT(TRIM(A2),FIND(" ",TRIM(A2))-1)
+ TRIM(A2): Cắt bỏ những khoảng trắng thừa trong chuỗi. Tạo ra chuỗi Họ và tên theo chuẩn. + FIND(" ",TRIM(A2)) : Tìm vị trí khoảng trắng đầu tiên trong chuỗi.
+ FIND(" ",TRIM(A2))-1: Tìm chiều dài Họ cần tách
2>. =TRIM(LEFT(SUBSTITUTE(TRIM(A2)," "," "),7))
+ SUBSTITUTE(TRIM(A2)," "," "): Tìm và thay thế chiều dài khoảng trắng trong chuỗi từ 1 lên 6.
+ LEFT(SUBSTITUTE(TRIM(A2)," "," "),7): Cắt chuỗi từ bên trái qua phải với 7 ký tự (Trả về Chuỗi Họ).
+ TRIM(LEFT(SUBSTITUTE(TRIM(A2)," "," "),7)): Cắt bỏ khoảng trắng thừa trong Chuỗi Họ tìm được. 3>. =REPLACE(TRIM(A2),FIND(" ",TRIM(A2)),30,"")
+ FIND(" ",TRIM(A2)) : Tìm vị trí khoảng trắng đầu tiên trong chuỗi.
+ REPLACE(TRIM(A2),FIND(" ",TRIM(A2)),30,"") : Thay thế chuỗi bắt đầu từ vị trí khoảng trắng đầu tiên đến hết chuỗi (chuỗi con trong chuỗi Họ và tên) bằng rỗng.
II>. TÁCH TÊN LÓT
1>. {=MID(TRIM(A2),FIND(" ",TRIM(A2))+1,MAX((MID(TRIM(A2),ROW($1:$50),1)=" ")*ROW($1:$50))-FIND(" ",TRIM(A2)))}
+ ROW($1:$50) : Tạo ra một mảng gồm 50 phần tử từ 1->50
+ MID(TRIM(A2),ROW($1:$50),1) : Cắt giữa chuỗi của chuỗi Họ và tên với vị trí bắt đầu từ 1 ->50, với chiều dài chuỗi cần cắt là 1 ký tự. ----Hàm trên sẽ trả về một mảng gồm 50 phần tử.vừa có ký tự thường, vùa có khoảng trắng và ký tự rỗng.
+ MID(TRIM(A2),ROW($1:$50),1)=" " : Toán tử so sánh 50 phần tử tìm được với ký tự khoảng trắng. ----Toán tử trên sẽ trả về một mảng gồm 50 phần tử True or False, Nếu so sánh đúng thì trả về True, ngược lại là False.
+ MID(TRIM(A2),ROW($1:$50),1)=" ")*ROW($1:$50) : Toán tử tạo ra một mảng gồm 50 phần tử (mảng số) ----Nếu phần tử nào là False thì sẽ trả về 0, Là TRUE thì trả về số ứng với vị trí của phần tử TRUE đó.
+ MAX((MID(TRIM(A2),ROW($1:$50),1)=" ")*ROW($1:$50)) : Tìm ra phần tử có giá trị lớn nhất trong mảng số tìm được ở trên. ----Hàm trên sẽ trả về vị trí khoảng trắng lớn nhất trong chuỗi Họ và tên.
+ MAX((MID(TRIM(A2),ROW($1:$50),1)=" ")*ROW($1:$50))-FIND(" ",TRIM(A2)) : Trả về chiều dài của Tên lót.
+ MID(TRIM(A2),FIND(" ",TRIM(A2))+1,MAX((MID(TRIM(A2),ROW($1:$50),1)=" ")*ROW($1:$50))-FIND(" ",TRIM(A2)))
- Hàm cắt giữa chuỗi Họ và tên với vị trí bắt đầu là vị trí khoảng trắng đầu tiên +1, với chiều dài chuỗi cần cắt đã tìm ở trên.
+ {} : Ký hiệu của hàm mảng, sau khi gõ xong công thức, nhấn Ctrl+Shift+Enter, các toán tử mảng sẽ bắt đầu hoạt động.
III. TÁCH TÊN:
1>. =TRIM(RIGHT(SUBSTITUTE(TRIM(A2)," "," "),7))
+ Diễn giải công thức tương tự như mục 2 phần Tách Họ.
2>. {=MID(TRIM(A2),MAX((MID(TRIM(A2),ROW($1:$50),1)=" ")*ROW($1:$50))+1,7)}
+ MAX((MID(TRIM(A2),ROW($1:$50),1)=" ")*ROW($1:$50)): Tìm vị trí khoảng trắng lớn nhất trong chuỗi Họ và Tên.
+ MAX((MID(TRIM(A2),ROW($1:$50),1)=" ")*ROW($1:$50))+1 : Tìm vị trí đầu tiên của chuỗi Tên.
+ MID(TRIM(A2),MAX((MID(TRIM(A2),ROW($1:$50),1)=" ")*ROW($1:$50))+1,7) : Cắt chuỗi Họ và Tên với chiều dài chuỗi cần cắt là 7.
3>. {=RIGHT(TRIM(A2),LEN(TRIM(A2))-MAX((MID(TRIM(A2),ROW($1:$50),1)=" ")*ROW($1:$50)))}
+ LEN(TRIM(A2)): Tìm chiều dài chuẩn của chuỗi Họ và Tên.
+ MAX((MID(TRIM(A2),ROW($1:$50),1)=" ")*ROW($1:$50)) : Tìm vị trí khoảng trắng lớn nhất trong chuỗi Họ và Tên.
+ LEN(TRIM(A2))-MAX((MID(TRIM(A2),ROW($1:$50),1)=" ")*ROW($1:$50)) : Tìm chiều dài của chuỗi Tên cần tách. + RIGHT(TRIM(A2),LEN(TRIM(A2))-MAX((MID(TRIM(A2),ROW($1:$50),1)=" ")*ROW($1:$50))) : Cắt phải chuỗi Họ và Tên.
4>. {=REPLACE(TRIM(A2),1,MAX((MID(TRIM(A2),ROW($1:$50),1)=" ")*ROW($1:$50)),"")} + MAX((MID(TRIM(A2),ROW($1:$50),1)=" ")*ROW($1:$50)): Tìm vị trí khoảng trắng lớn nhất trong chuỗi Họ và Tên.
+ REPLACE(TRIM(A2),1,MAX((MID(TRIM(A2),ROW($1:$50),1)=" ")*ROW($1:$50)),"") : Thay thế chuỗi không chứa tên bằng rỗng.
5>. =RIGHT(TRIM(A2),LEN(TRIM(A2))-FIND("-",SUBSTITUTE(TRIM(A2)," ","-",LEN(TRIM(A2))-LEN(SUBSTITUTE(A2," ","")))))
+ SUBSTITUTE(A2," ",""): Thay thế ký tự khoảng trắng trong chuỗi Họ và Tên bằng rỗng. + LEN(SUBSTITUTE(A2," ","")) : Tìm chiều dài chuỗi Họ và Tên sau khi bỏ đi khoảng trắng. + LEN(TRIM(A2))-LEN(SUBSTITUTE(A2," ","")) : Tìm số khoảng trắng trong chuỗi Họ và Tên ban đầu.
+ SUBSTITUTE(TRIM(A2)," ","-",LEN(TRIM(A2))-LEN(SUBSTITUTE(A2," ",""))) : Thay thế ký tự " " bằng "-" ở vị trí " " lớn nhất trong chuỗi.
+ FIND("-",SUBSTITUTE(TRIM(A2)," ","-",LEN(TRIM(A2))-LEN(SUBSTITUTE(A2," ","")))) : Tìm vị trí của ký tự "-" trong chuỗi.
+ LEN(TRIM(A2))-FIND("-",SUBSTITUTE(TRIM(A2)," ","-",LEN(TRIM(A2))-LEN(SUBSTITUTE(A2," ","")))) : Tìm chiều dài chuỗi Tên cần tách.
Hoành tráng quá phải không (Bạn chỉ cần copy 1 trong những cách trên ở từng mục tách họ, lót, tên vào ô mình muốn - dòng đỏ, màu xanh là giải thích công thức). Bạn có thể vào mục tìm kiếm. Chủ đề này đã được thảo luận rất nhiều