Cách tách riêng Họ tên đệm & tên

  • Thread starter Thread starter lhuon42
  • Ngày gửi Ngày gửi
Liên hệ QC

lhuon42

Thành viên mới
Tham gia
7/5/08
Bài viết
1
Được thích
0
Anh chị chỉ giúp e với làm sao để tách riêng
VD:thành Nguyến Thị Minh ở một cột và Thu ở một cột
 
Bạn xem ở đây nhé!
 
Anh chị chỉ giúp e với làm sao để tách riêng
VD:thành Nguyến Thị Minh ở một cột và Thu ở một cột

Mình góp vui một cách học lóm đây
Bạn bôi chọn những tên bạn cần tách ra ( ở đây ví dụ là A1 đến A10)Bạn quét chọn A1 đến A10.vÀO Data / text to columns / Sau đó xuất hiện một bản gì đó +-+-+-+ .Bạn chọn Next / Chọn tiếp Space / Finish.
Bạn tìm hiểu thêm trong đó mình không biết hết +-+-+-+
 
Tui nhớ ở đâu đó trên GPE có công thức này:

Giả sử ô A1 chứa tên đầy đủ: Nguyễn Thị Minh Thu

Để tách phần tên ra (Thu), dùng công thức:
=TRIM(RIGHT(SUBSTITUTE(A1," ",REPT(" ",100)),100))​
Phần còn lại của tên (Nguyễn Thị Minh), dùng công thức:
=TRIM(LEFT(A1, LEN(A1)-LEN(C1)-1))​
Góp chút cho vui ngày đầu năm.
 
Tui nhớ ở đâu đó trên GPE có công thức này:

Giả sử ô A1 chứa tên đầy đủ: Nguyễn Thị Minh Thu

Để tách phần tên ra (Thu), dùng công thức:
=TRIM(RIGHT(SUBSTITUTE(A1," ",REPT(" ",100)),100))​
Phần còn lại của tên (Nguyễn Thị Minh), dùng công thức:
=TRIM(LEFT(A1, LEN(A1)-LEN(C1)-1))​
Góp chút cho vui ngày đầu năm.
Công thức này:
=TRIM(LEFT(A1, LEN(A1)-LEN(C1)-1))
dùng để lấy phần HỌ và HỌ ĐỆM
Nếu như ta đã lấy được TÊN rồi thì sao không SUBSTITUTE tiếp tục, cho TÊN thành rổng là ra ngay ---> Gọn hơn nhiều
 
Xin lỗi, bài trên tôi không ghi rõ C1 là cái gì. Xin nói lại:

Giả sử ô A1 chứa tên đầy đủ: Nguyễn Thị Minh Thu

Để tách phần tên ra (Thu), dùng công thức (tại C1)

[C1] =TRIM(RIGHT(SUBSTITUTE(A1," ",REPT(" ",100)),100))

Phần còn lại của tên (Nguyễn Thị Minh), dùng công thức (tại B1):

[B1] =TRIM(LEFT(A1, LEN(A1)-LEN(C1)-1))

Có nghĩa là HỌ và TÊN LÓT (cột B) làm sau phần tách TÊN (cột C)

Theo đề nghị của Anh Tuấn, cũng có thể dùng công thức sau cho cột B, để lấy phần HỌ và TÊN LÓT sau khi đã tách TÊN (ở cột C):
[B1] = TRIM(SUBSTITUTE(A1, C1, ""))
Sở dĩ tôi dùng hàm TRIM là để cắt luôn ký tự trắng cuối cùng trong chuỗi (nếu như còn sót)
 
Chủ đề này tuy không mới nhưng xem ra còn nhiều cách làm mới.
Mình xin bổ sung bài của Volga tại sheet ví dụ 1 và tham gia thêm 1 cách khác tại sheet ví dụ 2 trong File đính kèm.

Chúc các bạn năm mới vui vẻ !
 

File đính kèm

Chủ đề này tuy không mới nhưng xem ra còn nhiều cách làm mới.
Mình xin bổ sung bài của Volga tại sheet ví dụ 1 và tham gia thêm 1 cách khác tại sheet ví dụ 2 trong File đính kèm.

Chúc các bạn năm mới vui vẻ !


Bạn Trung Chinh có thể giới thiệu hết những chức năng trong đó cho mọi người tham khảo được không ?
 
Chủ đề này tuy không mới nhưng xem ra còn nhiều cách làm mới.
Mình xin bổ sung bài của Volga tại sheet ví dụ 1 và tham gia thêm 1 cách khác tại sheet ví dụ 2 trong File đính kèm.

Chúc các bạn năm mới vui vẻ !

Cách tách tên ở ví dụ 1 của bạn chỉ áp dụng đúng khi cả danh sách họ tên phải có cùng số chữ, và phải cố định là 3 chữ!? Xem ra có vẻ vô lý nhỉ!? . Nếu danh sách ngẫu nhiên mà làm theo cách này thì không làm được. Tôi lấy ví dụ danh sách này nhé:
|Họ tên| Tên cần tách ra
1|TRẦN MINH| MINH
2|NGUYỄN THỊ NGỌC NỮ| NỮ
3|LÊ HỒNG LĨNH| LĨNH
4|CÔNG TẰNG TÔN NỮ TRÀ MI NHẬT NGUYỆT THẦN KIẾM| KIẾM
5|PHẠM NGUYỄN MINH CÔNG HẰNG| HẰNG
6|NGUYỄN THỊ MỸ NGHIÊNG| NGHIÊNG
7|LÝ RỰC| RỰC
8|.....
Tương tự, bạn hãy dùng cách thứ hai của bạn (ví dụ 2) để tách họ tên theo danh sách mình đưa cho bạn rồi xem thử bạn bị sai chỗ nào nhé!


Để có được tổng hợp các phương pháp tách tên (cả công thức và VBA), hãy xem theo link này, bài của hoangdanh282vn! Rất đầy đủ, không cần phải tìm thêm cách làm gì nữa!

http://www.giaiphapexcel.com/forum/showthread.php?p=64642
 
Lần chỉnh sửa cuối:
Tách tên

Cách tách tên ở ví dụ 1 của bạn chỉ áp dụng đúng khi cả danh sách họ tên phải có cùng số chữ, và phải cố định là 3 chữ!? Xem ra có vẻ vô lý nhỉ!? . Nếu danh sách ngẫu nhiên mà làm theo cách này thì không làm được. Tôi lấy ví dụ danh sách này nhé:
|Họ tên| Tên cần tách ra
1|TRẦN MINH| MINH
2|NGUYỄN THỊ NGỌC NỮ| NỮ
3|LÊ HỒNG LĨNH| LĨNH
4|CÔNG TẰNG TÔN NỮ TRÀ MI NHẬT NGUYỆT THẦN KIẾM| KIẾM
5|PHẠM NGUYỄN MINH CÔNG HẰNG| HẰNG
6|NGUYỄN THỊ MỸ NGHIÊNG| NGHIÊNG
7|LÝ RỰC| RỰC
8|.....
Tương tự, bạn hãy dùng cách thứ hai của bạn (ví dụ 2) để tách họ tên theo danh sách mình đưa cho bạn rồi xem thử bạn bị sai chỗ nào nhé!

Cảm ơn ca_dafi ! Đúng là không ổn, mình thiển cận quá không lường hết tình huống.

Nhưng bổ sung thêm công thức tìm dữ liệu cột cuối = LOOKUP(2;1/(1-ISBLANK($K9:$V9));$K9:$V9)) thì OK và mình cũng đã sửa lại sub theo kiểu VBD các bạn góp ý cho mình nhé.

Cảm ơn Bạn Ndu đã giúp công thức này.

@ Tất cả các bạn: Mình làm cho vui thôi, vì đối với mình đó cũng là một cách học tập, mong các bạn đừng trách vì làm mất thì giờ của bạn.

Thân!
 

File đính kèm

Cách tách tên ở ví dụ 1 của bạn chỉ áp dụng đúng khi cả danh sách họ tên phải có cùng số chữ, và phải cố định là 3 chữ!? Xem ra có vẻ vô lý nhỉ!? . Nếu danh sách ngẫu nhiên mà làm theo cách này thì không làm được. Tôi lấy ví dụ danh sách này nhé:
|Họ tên| Tên cần tách ra
1|TRẦN MINH| MINH
2|NGUYỄN THỊ NGỌC NỮ| NỮ
3|LÊ HỒNG LĨNH| LĨNH
4|CÔNG TẰNG TÔN NỮ TRÀ MI NHẬT NGUYỆT THẦN KIẾM| KIẾM
5|PHẠM NGUYỄN MINH CÔNG HẰNG| HẰNG
6|NGUYỄN THỊ MỸ NGHIÊNG| NGHIÊNG
7|LÝ RỰC| RỰC
8|.....
Tương tự, bạn hãy dùng cách thứ hai của bạn (ví dụ 2) để tách họ tên theo danh sách mình đưa cho bạn rồi xem thử bạn bị sai chỗ nào nhé!

Cảm ơn ca_dafi ! Đúng là không ổn, mình thiển cận quá không lường hết tình huống.

Nhưng bổ sung thêm công thức tìm dữ liệu cột cuối = LOOKUP(2;1/(1-ISBLANK($K9:$V9));$K9:$V9)) thì OK và mình cũng đã sửa lại sub theo kiểu VBD các bạn góp ý cho mình nhé.

Cảm ơn Bạn Ndu đã giúp công thức này.

@ Tất cả các bạn: Mình làm cho vui thôi, vì đối với mình đó cũng là một cách học tập, mong các bạn đừng trách vì làm mất thì giờ của bạn.

Thân!

Tách tên này có tạo ra cột phụ không nhỉ! thường thì mình thấy tách tên bằng VBA thì hay tạo ra cột phụ lém.
 
Tách tên

Cảm ơn Bác HYen về câu lệnh tìm ô dữ liệu cuối dòng.
Từ gợi ý của Bác HYen Tôi vừa làm thêm sub tách tên bằng phương pháp kết hợp TextToColumns với công thức và VBA
Mã:
Sub TachTen2()
Dim Rcuoi As Long
Rcuoi = [B65536].End(xlUp).Row
    [C4:Z65500].Clear
    Range("B4:B" & Rcuoi).Copy Destination:=[Z4]
    [Z4].CurrentRegion.TextToColumns Destination:=Range("K4"), _
    DataType:=xlDelimited, Space:=True, Other:=False, _
    FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1))
    For i = 4 To Rcuoi
        If Cells(i, 2) > 0 Then
            Cells(i, 4) = Cells(i, 25).End(xlToLeft)
            Cells(i, 3).FormulaR1C1 = "=LEFT(RC2,LEN(RC2)-LEN(RC4))": Cells(i, 3).Value = Cells(i, 3)
         End If
   Next
        [K:Z].Clear:         [C3].Select
End Sub

tại dòng Cells(i, 3).... do không biết dùng hàm VBA nên tôi dùng tạm công thức kiểu này. Nhờ các bạn sửa giúp.

Xin cảm ơn !
 

File đính kèm

Nếu dùng VBA, Trung Chinh dùng hàm InstrRev sẽ gọn hơn.
InstrRev tìm vị trí 1 chuỗi con trong chuỗi lớn từ phía bên phải chuỗi lớn. Nếu chuỗi con là dấu cách thì vị trí tìm thấy chính là vị trí giữa họ và tên.
Mã:
Sub TachTen()
Dim Rcuoi As Long, i As Long, vitri As Long, hoten As String
Rcuoi = [B65536].End(xlUp).Row
[C4:D65500].Clear
For i = 4 To Rcuoi
  hoten = Trim(Cells(i, 2))
  vitri = InStrRev(hoten, " ")
  If vitri > 0 Then
    Cells(i, 4) = Mid(hoten, vitri + 1)
    Cells(i, 3) = Trim(Left(hoten, vitri))
  Else
    Cells(i, 4) = hoten
  End If
Next
End Sub
hoten = Trim(Cells(i, 2)) để loại các khoản trắng dư 2 đầu.
 
Loay hoay mấy ngày với TextToColumns và các cột phụ thế mà chỉ với một câu InstrRev của Bác PhamDuyLong ! bao công lao của mình đổ xuống sông xuống bể hết...
Nói đùa thôi, em rất vui vì qua bài này các bác đã giúp em nhiều điều bổ ích. Cảm ơn các Bác rất nhiều !
 
Loay hoay mấy ngày với TextToColumns và các cột phụ thế mà chỉ với một câu InstrRev của Bác PhamDuyLong ! bao công lao của mình đổ xuống sông xuống bể hết...
Nói đùa thôi, em rất vui vì qua bài này các bác đã giúp em nhiều điều bổ ích. Cảm ơn các Bác rất nhiều !
Xin nói thêm: Việc tách họ tên không ai dùng Text to Columns để làm cả
Nếu là tôi thì tôi không dùng Text to Columns, và cũng không dùng InstrRev ---> Vì phải For mất công lắm
Tôi khoái nhất là dùng Replace thay mỗi khoãng trắng thành 255 khoảng trắng khác, sau đó RIGHT 1 nhất là ra TÊN ---> Khỏi PHO PHO gì ráo
Nhưng không sao cả... nghiên cứu vẫn có cái lợi riêng, cho dù việc bạn đã làm là hay hay dở (ích lợi lớn nhất là những gì bạn thu được)
 
Lần chỉnh sửa cuối:
Tách họ đệm; tên

Bạn đang cần tách Họ đệm, tên như mong muốn
Trong diễn đàn có các cách giúp bạn, riêng mình đã sử dụng thành công công việc tách này,
bạn có thể tham khảo: cài đạt phần mền kèm theo ( dưới đây), xuất hiện tiện ích tiếng việt, bạn chỉ việc chọn công cụ bạn muốn
Chúc bạn thành công
Một người bạn EXCEl

Không hiểu sao mình không gửi được file đính kèm
Bạn có thể cho địa chỉ E_Mail mình chuyển trực tiếp nhé
Thành thật xin lỗi
 
Lần chỉnh sửa cuối:
cái topic này hay quá, mình học hỏi đc rất nhiều,cám ơn tất cả các bạn
nhưng mình muốn hỏi 1 vấn đề nữa: khi tách tên ra rùi mình muốn xếp tên đó theo thứ tự abc và phần họ cũng đi cùng tương ứng với tên thì làm thế nào ????????
 
Web KT

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

Back
Top Bottom