Các phương pháp tách họ và tên đề nghị post ở đây

Liên hệ QC
Uh... tôi cũng đoán bạn sẽ làm thế... Tôi tham khảo các trang web nước ngoài, thấy họ cũng tách họ tên bằng cách giống bạn nói, nhưng vẫn phải VBA, Excel ko có hàm này...
ANH TUẤN
 
Tôi đã thực hiện các bước tách chữ như các ban hướng dẫn nhưng không thực hiện tách tên và họ được mong các bạn giúp đỡ

Tôi không hiểu VBA là gì các bạn hướng dẫn giúp nhé
From Sa_DQ:
Với từ khóa 'VBA' bạn sẽ tiếp xúc với rất chi là nhiều thứ về VBA!
 
Chỉnh sửa lần cuối bởi điều hành viên:
AddIn Tách ghép họ tên

tuananh1507 đã viết:
Em muốn tách tên ra khỏi họ và tên thì phải làm sao vậy các bác. Ví dụ:
Ngô Kim Tuyền -> Tuyền
Lê Tuấn Anh -> Anh
Lê Quốc Hùng -> Hùng
Cám ơn các bác nhiều!!!
Tách họ tên bằng công thức có, bằng VBA cũng có. Nhưng cách nào ta cũng phải qua nhiều thao tác. AddInHoTen giúp bạn tách họ tên từ 1 cột ra 2 cột hoặc từ 2 cột họ, tên ghép thành 1 cột chỉ bằng thao tác click chuột.
Đơn giản, nếu vùng họ tên bạn chọn:
- 1 cột > tách họ tên ra 2 cột
- 2 cột > ghép họ tên thành một cột
Tự động mở rộng vùng chọn cho bạn, cho phép bạn chọn lại vùng họ tên trên form, tách, ghép cả tên trường.
Cái này thích hợp cho các bạn đã nhập danh sách xong, nhưng xếp bảo phải tách ra, ghép vào và phải nộp ngay cho xếp.
 

File đính kèm

  • AddInHoTen.zip
    32.2 KB · Đọc: 237
Cho em hỏi chức năng Test to column là gì thế? Ứng dụng như thế nào? Em mới nghe nói đến thôi+-+-+-+
 
sutrang đã viết:
Cho em hỏi chức năng Test to column là gì thế? Ứng dụng như thế nào? Em mới nghe nói đến thôi+-+-+-+
Đây là chức năng Text to Columns, có thể hiểu đơn giản thế này : Chức năng này cho phép tách từng chữ trong Cell ra thành một hay nhiều chữ trong từng cột ; Căn cứ vào ký tự phân cách (có thể là : dấu phẩy, chấm phẩy, Space, ...). Bạn có thể test thử rất dễ dàng : Chọn ô dữ liệu, menu Data / Text to Columns...

TDN
 
cho em hỏi nếu lần sau mà dùng lại lệnh thì làm thế nào
chẳng lẽ lần nào dùng cũng phải copy đoạn code đó sang hay sao
E thử làm rồi nhưng chỉ áp dụng được có một lần thôi
 
cho em hỏi nếu lần sau mà dùng lại lệnh thì làm thế nào
chẳng lẽ lần nào dùng cũng phải copy đoạn code đó sang hay sao
E thử làm rồi nhưng chỉ áp dụng được có một lần thôi

Mỗi lần copy như vầy sẽ dùng được cho 1 file.

Muốn làm 1 lần mà dùng mãi mãi thì xài Add-Ins... nhé
 
Thông thường, khi có 1 danh sách, họ tên được viết liền. Tại sao lại phải tách riêng ra cột khác nhỉ. Khi muốn sắp xếp họ tên trong tiếng Việt thường sử dụng VBA, đã dùng đến nó thì cần gì phải tách tên ra cột khác.
 
Thông thường, khi có 1 danh sách, họ tên được viết liền. Tại sao lại phải tách riêng ra cột khác nhỉ. Khi muốn sắp xếp họ tên trong tiếng Việt thường sử dụng VBA, đã dùng đến nó thì cần gì phải tách tên ra cột khác.
Bài toán tách tên này còn áp dụng trong nhiều trường hợp nữa bạn ạ, giả sử không phải là sắp xếp theo tiếng Việt có dấu mà là sắp xếp trực tiếp luôn thì sao???.
Nhân đây tôi cũng xin góp thêm 1 cách tách Tên mà không dùng VBA(Cái này tôi từng làm khi chưa biết gì về VBA và chỉ áp dụng được trong trường hợp thực tế cụ thể, không áp dụng được cho mọi trường hợp).
1. Dùng chức năng Text to columns để tách cột Họ tên thành các cột cách nhau bởi dấu cách.
2. Tại 1 cột cách cột Họ tên ban đầu đủ lớn để chắc chắn họ tên không thể có nhiều từ hơn(Ví dụ là cột thứ 10 sau cột Họ tên, vì chắc không ai có tên nhiều hơn 10 từ, cái này chính là hạn chế)
3. Dùng hàm Index kết hợp với hàm CountA để lấy về tên
- Ví dụ Họ tên nằm ở ô A1, dùng chức năng Text to columns để tách thành các cột, tại ô J1 dùng công thức sau:
Mã:
=INDEX(A1:I1,1,COUNTA(A1:I1))
Cách này hơi chuối 1 chút, nhưng được cái không phải dùng VBA --=0.
 
ĐÂY LÀ CÁCH TÔI ĐÃ HỌC ĐƯỢC TRÊN DIỄN ĐÀN VÀ ĐANG THỰC HIỆN, XIN CHIA SẺ CÙNG BẠN:

Từ file EXCEL có chứa dữ liệu bạn đang muốn tách họ và tên - bạn hãy nhấn Alt + F11 sau đó nhấn insert nhấn module dán đọan mã sau vào trong cửa sổ module:

Private Function Tachten(ten As String, lg As Integer)
Dim j As Integer
Name = Trim(ten)
For j = Len(Name) To 1 Step -1
If Mid(Name, j, 1) = " " Then
If lg = "1" Then
Tachten = Right(Name, Len(Name) - j)
Else
Tachten = Left(Name, j)
End If
Exit For
End If
Next
End Function


SỬ DỤNG HÀM TÍNH TÁCH HỌ VÀ TÊN:
Giả sử bạn muốn tách tên ra khỏi họ và họ đệm tại ô A1 = Phạm Xuân Trường / Gõ = tachten(A1,0) / Kết quả: Phạm Xuân
Giả sử bạn muốn tách tên ra khỏi họ và họ đệm tại ô A1 = Phạm Xuân Trường / Gõ = tachten(A1,1) / Kết quả: Trường


(Nếu muốn sử dụng hàm này cho tòan excel bạn hãy đọc thêm trên diễn đàn này)

Chúc bạn thành công !

Mình lại cần tách Họ, tên đệm và tên thành 3 cột thì công thức VBS sẽ thế nào nhỉ? Nhờ cả nhà giúp với nhé ! Thanks.
 
Mình lại cần tách Họ, tên đệm và tên thành 3 cột thì công thức VBS sẽ thế nào nhỉ? Nhờ cả nhà giúp với nhé ! Thanks.

Bạn xem file đính kèm. File này làm bằng công thức. Cái này có nhiều trên GPE mình lắm bạn à!
 

File đính kèm

  • TachHoTen.zip
    7.2 KB · Đọc: 167
ĐÂY LÀ CÁCH TÔI ĐÃ HỌC ĐƯỢC TRÊN DIỄN ĐÀN VÀ ĐANG THỰC HIỆN, XIN CHIA SẺ CÙNG BẠN:

Từ file EXCEL có chứa dữ liệu bạn đang muốn tách họ và tên - bạn hãy nhấn Alt + F11 sau đó nhấn insert nhấn module dán đọan mã sau vào trong cửa sổ module:

Private Function Tachten(ten As String, lg As Integer)
Dim j As Integer
Name = Trim(ten)
For j = Len(Name) To 1 Step -1
If Mid(Name, j, 1) = " " Then
If lg = "1" Then
Tachten = Right(Name, Len(Name) - j)
Else
Tachten = Left(Name, j)
End If
Exit For
End If
Next
End Function


SỬ DỤNG HÀM TÍNH TÁCH HỌ VÀ TÊN:
Giả sử bạn muốn tách tên ra khỏi họ và họ đệm tại ô A1 = Phạm Xuân Trường / Gõ = tachten(A1,0) / Kết quả: Phạm Xuân
Giả sử bạn muốn tách tên ra khỏi họ và họ đệm tại ô A1 = Phạm Xuân Trường / Gõ = tachten(A1,1) / Kết quả: Trường


(Nếu muốn sử dụng hàm này cho tòan excel bạn hãy đọc thêm trên diễn đàn này)

Chúc bạn thành công !


Chào bạn!
cho tôi hỏi mình dán đoạn mã vào sheet 1 ah!
nhưng khi tôi dán đoạn mã vào shet 1 rôi thực hiện tại ô A1=Nguyễn Trường/ gõ Tachten(A1,0) --> #Name?
Không có kết quả bạn ah!
Mong giúp đỡ!!!
 
Chào bạn!
cho tôi hỏi mình dán đoạn mã vào sheet 1 ah!
nhưng khi tôi dán đoạn mã vào shet 1 rôi thực hiện tại ô A1=Nguyễn Trường/ gõ Tachten(A1,0) --> #Name?
Không có kết quả bạn ah!
Mong giúp đỡ!!!
Bạn Insert > Module, sau đó dán đoạn mã ấy vào Module mới vừa thêm vào (không phải Sheet)

TDN
 
Chỉnh sửa lần cuối bởi điều hành viên:
Mình cần lấy tên đệm và tên chính thì dùng công thức nào ?
Nguyễn Tấn Dũng --> Nguyễn và Tấn Dũng
 
tôi có danh sách họ tên trong excel , để tách thành họ riêng , tên riêng thì làm thế nào ?
 
tôi có danh sách họ tên trong excel , để tách thành họ riêng , tên riêng thì làm thế nào ?
Em cũng xin tham gia 1 code đơn giản. "Tách tên" có rất nhiều trên diễn đàn. Trước mắt em xin gởi anh 1 công thức và 1 code, tùy anh chọn:
1/ Công thức
A1: Họ tên
B1=TRIM(RIGHT(SUBSTITUTE(A1," ",REPT(" ",10)),18))
Hàm này nghĩa là thay 1 khỏan trắng giữa họ và tên thành 10 khỏan trắng.
Và lấy right 18. Tên VN không dài hơn 18 ký tự.
2/ Code: anh chép code này vào module. Nhấn Alt F11, và Insert Module.
PHP:
Function layten(sHoTen As Range) As String
Dim Vitri As Long, sTen As String
Vitri = InStrRev(sHoTen, " ")
sTen = Right(sHoTen, Len(sHoTen) - Vitri)
layten = sTen
End Function
Cú pháp:
=layten(Ô chứa họ tên)
Hy vọng giúp được Anh.
 
Đây là UDF hàm tách tên ngắn nhất! Code này có sự hỗ trợ rất nhiệt tình của bác ndu96081631. Rất cảm ơn bác.
PHP:
 Function tachten(ten As String) As String Dim arr() As String If ten = "" Then tachten = "Error": Exit Function arr() = Split(ten, " ") tachten = arr(Len(ten) - Len(Application.WorksheetFunction.Substitute(ten, " ", ""))) End Function
Code này dùng để chỉ lấy tên của dữ liệu thôi. Thân.
 
Lần chỉnh sửa cuối:
Web KT
Back
Top Bottom