H
Thật ra, đây chỉ là bài tổng hợp lại các vấn đề nằm rải rác trên diễn đàn từ lâu, nhưng đối với các bạn mới tham gia EFC, các bạn sẽ khó tìm thấy để tham khảo, nên tôi đúc kết lại, các bạn hãy theo dõi để tránh việc đưa ra thảo luận lại những vấn đề đã cũ và đã được thảo luận rất sôi nổi, cặn kẽ, kỹ lưỡng rồi
Vấn đề : Tách tên ra khỏi cột họ, tên
1/ Công thức của bạn anhoanh :
=IF(MID(RIGHT(A8,2),1,1)=" ",PROPER(RIGHT(A8,1)),IF(MID(RIGHT(A8,3),1,1)=" ",PROPER(RIGHT(A8,2)),IF(MID(RIGHT(A8,4),1,1)=" ",PROPER(RIGHT(A8,3)),IF(MID(RIGHT(A8,5),1,1)=" ",PROPER(RIGHT(A8,4)),IF(MID(RIGHT(A8,6),1,1)=" ",PROPER(RIGHT(A8,5)),IF(MID(RIGHT(A8,7),1,1)=" ",PROPER(RIGHT(A8,6)),0))))))
Với công thức trên có những tên không tách được và nhất là những tên dài hơn 7 ký tự
Những tên không tách được : (VNI-Times)
LEÂ THÒ PHÖÔÏNG
ÑAËNG VAÊN THÖÔÛNG
NGOÂ VAÊN CHUYEÅN
NGUYEÃN NGOÏC TRUYEÀN
2/Bạn quocnghia đề nghị công thức sau :
Công thức này cho phép bạn cắt được tên đến 10 ký tự (Nói chung các tên VN thì OK hết), nếu nhiều hơn hoặc rảnh thì các bạn tự thêm vào chổ in đậm 11,12... 1triệu cũng được.
=RIGHT($B1,FIND(" ",CONCATENATE(LEFT(RIGHT($B1,1),1),LEFT(RIGHT($B1,2 ),1),LEFT(RIGHT($B1,3),1),LEFT(RIGHT($B1,4),1),LEF T(RIGHT($B1,5),1),LEFT(RIGHT($B1,6),1),LEFT(RIGHT( $B1,7),1),LEFT(RIGHT($B1,8),1),LEFT(RIGHT($B1,9),1 ),LEFT(RIGHT($B1,10),1)))-1)
Tuy nhiên, nếu tên mà có thêm dấu space ở cuối thì sẽ không tách được
Vì vậy các bạn nên Trim ô B1 trước khi áp dụng công thức này
Tham khảo thêm tại :
http://www.webketoan.com/forum/showthread.php?t=1495&page=3&pp=10
3/ Bạn 8020 đưa ra một công thức khác :
8020 có một cách khác lập công thức ngắn hơn (kết hợp hàm Find & hàm Substitute để tìm ra vị trí của khoảng trắng cuối cùng) :
Td : Cell A1 chứa họ tên "Công Tằng Tôn Nữ Nguyễn Thị Linh Tinh", nhập công thức sau vào ô B1 để tách tên ra: =RIGHT(A1,LEN(A1)-FIND("*",SUBSTITUTE(A1," ","*",LEN(A1)-LEN(SUBSTITUTE(A1," ",""))))).
Tham khảo thêm tại :
http://www.webketoan.com/forum/showthread.php?t=1617
Bổ sung thêm :
-Tách họ : Td tại ô C1 :
=LEFT(A1,FIND(" ",A1)-1)
-Tách tên đệm :
Giả sử tên nằm trong B1 và họ nằm trong C1
=IF(LEN(B1&C1)+2>=LEN(A1),"",MID(A1,LEN(C1)+2,LEN(A1)-LEN(B1&C1)-2))
-Tách các danh hiệu "Ông", "Bà", "Cô" ra khỏi họ tên :
=IF(OR(LEFT(A1,3)="Ông",LEFT(A1,2)="Bà",LEFT(A1,2)="Cô"),RIGHT(A1,LEN(A1)-FIND(" ",A1)),A1)
-Tách các danh hiệu "Mr", "Mrs", "Ms" ra khỏi họ tên : Tương tự trên
=IF(OR(LEFT(A1,2)="Mr",LEFT(A1,3)="Mrs",LEFT(A1,2)="Ms"),RIGHT(A1,LEN(A1)-FIND(" ",A1)),A1)
4/Bạn Tuanktcdcn đưa ra một giải pháp khác là viết hàm bằng VBA như sau :
Để đơn giản tôi xin đưa ra đây 2 hàm tự viết để giải quyết mục đích đó.
+Nhấn ALT+F11 (Vào chế độ lập trình)
+Vào Menu Insert\Module
+ Bây giờ bạn copy 2 hàm dưới đây vào Module
'============Chép vào Module
Function FRight(ByVal cTim As String, ByVal Chuoi As String) As Integer
FRight = InStrRev(Trim(Chuoi), cTim)
End Function
Function Tachten(ByVal HovaTen As String) As String
Tachten = Right(Trim(HovaTen), Len(Trim(HovaTen)) - FRight(" ", HovaTen))
End Function
'===========
+Nhấn ALT+F11 lần nữa để về chế độ Worksheet (bảng tính)
+Tại ô A1=Trần Thị Song Ngư
+Tách tên:
c1) Tại ô B1=Techten(A1)
c2) Tại ô B1=RIGHT(A1,LEN(A1)-Fright(" ",A1))
(Hàm Fright() tìm chuỗi cTim trong Chuoi từ phải sang trái, nếu tìm được cho ra giá trị >0. Hàm InStrRev chỉ có từ EXCEL 2000 trở lên mói có.)
Tham khảo thêm tại :
http://www.webketoan.com/forum/showthread.php?t=2833
5/Tận dụng khả năng sẵn có của Excel
Bạn vào data/text to columns/delimiters/space
Vấn đề : Tách tên ra khỏi cột họ, tên
1/ Công thức của bạn anhoanh :
=IF(MID(RIGHT(A8,2),1,1)=" ",PROPER(RIGHT(A8,1)),IF(MID(RIGHT(A8,3),1,1)=" ",PROPER(RIGHT(A8,2)),IF(MID(RIGHT(A8,4),1,1)=" ",PROPER(RIGHT(A8,3)),IF(MID(RIGHT(A8,5),1,1)=" ",PROPER(RIGHT(A8,4)),IF(MID(RIGHT(A8,6),1,1)=" ",PROPER(RIGHT(A8,5)),IF(MID(RIGHT(A8,7),1,1)=" ",PROPER(RIGHT(A8,6)),0))))))
Với công thức trên có những tên không tách được và nhất là những tên dài hơn 7 ký tự
Những tên không tách được : (VNI-Times)
LEÂ THÒ PHÖÔÏNG
ÑAËNG VAÊN THÖÔÛNG
NGOÂ VAÊN CHUYEÅN
NGUYEÃN NGOÏC TRUYEÀN
2/Bạn quocnghia đề nghị công thức sau :
Công thức này cho phép bạn cắt được tên đến 10 ký tự (Nói chung các tên VN thì OK hết), nếu nhiều hơn hoặc rảnh thì các bạn tự thêm vào chổ in đậm 11,12... 1triệu cũng được.
=RIGHT($B1,FIND(" ",CONCATENATE(LEFT(RIGHT($B1,1),1),LEFT(RIGHT($B1,2 ),1),LEFT(RIGHT($B1,3),1),LEFT(RIGHT($B1,4),1),LEF T(RIGHT($B1,5),1),LEFT(RIGHT($B1,6),1),LEFT(RIGHT( $B1,7),1),LEFT(RIGHT($B1,8),1),LEFT(RIGHT($B1,9),1 ),LEFT(RIGHT($B1,10),1)))-1)
Tuy nhiên, nếu tên mà có thêm dấu space ở cuối thì sẽ không tách được
Vì vậy các bạn nên Trim ô B1 trước khi áp dụng công thức này
Tham khảo thêm tại :
http://www.webketoan.com/forum/showthread.php?t=1495&page=3&pp=10
3/ Bạn 8020 đưa ra một công thức khác :
8020 có một cách khác lập công thức ngắn hơn (kết hợp hàm Find & hàm Substitute để tìm ra vị trí của khoảng trắng cuối cùng) :
Td : Cell A1 chứa họ tên "Công Tằng Tôn Nữ Nguyễn Thị Linh Tinh", nhập công thức sau vào ô B1 để tách tên ra: =RIGHT(A1,LEN(A1)-FIND("*",SUBSTITUTE(A1," ","*",LEN(A1)-LEN(SUBSTITUTE(A1," ",""))))).
Tham khảo thêm tại :
http://www.webketoan.com/forum/showthread.php?t=1617
Bổ sung thêm :
-Tách họ : Td tại ô C1 :
=LEFT(A1,FIND(" ",A1)-1)
-Tách tên đệm :
Giả sử tên nằm trong B1 và họ nằm trong C1
=IF(LEN(B1&C1)+2>=LEN(A1),"",MID(A1,LEN(C1)+2,LEN(A1)-LEN(B1&C1)-2))
-Tách các danh hiệu "Ông", "Bà", "Cô" ra khỏi họ tên :
=IF(OR(LEFT(A1,3)="Ông",LEFT(A1,2)="Bà",LEFT(A1,2)="Cô"),RIGHT(A1,LEN(A1)-FIND(" ",A1)),A1)
-Tách các danh hiệu "Mr", "Mrs", "Ms" ra khỏi họ tên : Tương tự trên
=IF(OR(LEFT(A1,2)="Mr",LEFT(A1,3)="Mrs",LEFT(A1,2)="Ms"),RIGHT(A1,LEN(A1)-FIND(" ",A1)),A1)
4/Bạn Tuanktcdcn đưa ra một giải pháp khác là viết hàm bằng VBA như sau :
Để đơn giản tôi xin đưa ra đây 2 hàm tự viết để giải quyết mục đích đó.
+Nhấn ALT+F11 (Vào chế độ lập trình)
+Vào Menu Insert\Module
+ Bây giờ bạn copy 2 hàm dưới đây vào Module
'============Chép vào Module
Function FRight(ByVal cTim As String, ByVal Chuoi As String) As Integer
FRight = InStrRev(Trim(Chuoi), cTim)
End Function
Function Tachten(ByVal HovaTen As String) As String
Tachten = Right(Trim(HovaTen), Len(Trim(HovaTen)) - FRight(" ", HovaTen))
End Function
'===========
+Nhấn ALT+F11 lần nữa để về chế độ Worksheet (bảng tính)
+Tại ô A1=Trần Thị Song Ngư
+Tách tên:
c1) Tại ô B1=Techten(A1)
c2) Tại ô B1=RIGHT(A1,LEN(A1)-Fright(" ",A1))
(Hàm Fright() tìm chuỗi cTim trong Chuoi từ phải sang trái, nếu tìm được cho ra giá trị >0. Hàm InStrRev chỉ có từ EXCEL 2000 trở lên mói có.)
Tham khảo thêm tại :
http://www.webketoan.com/forum/showthread.php?t=2833
5/Tận dụng khả năng sẵn có của Excel
Bạn vào data/text to columns/delimiters/space