Tách họ và tên ra khỏi họ tên trong Excel

Khi nhập liệu vào bảng tính Excel, thông thường ta nhập cả họ và tên vào cùng một ô. Tuy nhiên, có khi sau đó ta cần phải tách riêng tên ra khỏi họ và tên đệm, nếu làm thủ công bằng thao tác sao chép rồi dán qua ô khác thì sẽ rất bất tiện. Nếu sử dụng hàm Right kết hợp với một vài hàm khác thì cũng có thể cho ra kết quả như bạn muốn, nhưng trong một số trường hợp sẽ cho kết quả không chính xác. Có một phương pháp tối ưu hơn sẽ giúp bạn hoàn thành tốt công việc này
Cách thực hiện cũng khá đơn giản như sau:

- Trên bảng tính chứa cột họ tên cần tách, bạn chọn menu Tools > Macro > Visual Basic Editor, lập tức xuất hiện chương trình Microsoft Visual Basic.
- Tiếp theo, bạn nhấn menu Insert và chọn Module sẽ xuất hiện một cửa sổ soạn thảo.
Bạn nhập đoạn mã lệnh sau vào cửa sổ soạn thảo:

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

- Bạn nhấn Ctrl+S để lưu lại và đóng cửa sổ VB (nút close X) để quay trở về bảng tính Excel. - Bây giờ để tiến hành tách riêng họ và tên đệm vào một ô mới, bạn đặt con trỏ tại ô mới chứa họ và tên đệm rồi nhập vào công thức =TachTen(B3,0) và nhấn Enter sẽ thấy ngay kết quả. - Để tách riêng tên vào một ô mới, bạn đặt con trỏ tại ô sẽ chứa tên cần tách và nhập vào công thức =TachTen(B3,1) rồi nhấn Enter là xong. Ghi chú: B3 chính là địa chỉ của ô ban đầu chứa cả họ, tên đệm và tên.


Không dùng vòng For. Dùng cho 2 trường hợp tách Họ hoặc Tên.
Function TachHoTen(ByVal HoVaTen As String, Optional TachTen As Boolean = True) As String
Dim Pos_Right As Integer
If HoVaTen = "" Then GoTo EndFunc
HoVaTen = Trim(HoVaTen) 'Xoá khoảng trống hai bên của "HoVaTen"
Pos_Right = InStrRev(HoVaTen, " ") 'Kiểm tra hợp lệ
If Pos_Right = 0 Or Pos_Right - 1 < 0 Or Pos_Right + 1 > Len(HoVaTen) Then GoTo EndFunc:
End If
If TachTen Then
TachHoTen = Mid(HoVaTen, Pos_Right + 1)
Else TachHoTen = Left(HoVaTen, Pos_Right - 1)
End If
EndFunc:
End Function
=TachHoTen("Nguyễn Duy Khánh"). Kết quả là "Khánh".
=TachHoTen("Nguyễn Duy Khánh",False). Kết quả là "Nguyễn Duy".

Hàm InStrRev chỉ dùng từ Office2000(v9) trở lên.
Một cách khác

b1: Tool/Macro/Visual basic Editor
b2: Insert/Module
b3: gõ bảng công thức bên dưới
Public Function ten(hoten)
ten = Mid(Trim(hoten), InStrRev(Trim(hoten), " ") + 1)
End Function

Public Function Ho(hoten, ten)
Ho = Mid(Trim(hoten), 1, Len(Trim(hoten)) - Len(ten))
End Function

b4: save và nhấn vào nút biểu tượng Excel để quay về màn hình Excel
b5: VD ô A1 gõ Nguyễn Văn Mười Hai
Kết quả
b6: kết quả tên ở ô B1, gõ vào ô B1 =ten(A1)
b7: kết quả họ ở ô C1, gõ vào ô C1 =ho(A1,B1)

Trên website echip có một tiện ích Excel chứa sẵn 1 số hàm liên quan đến tách tên sắp xếp tiếng việt...
Downlowd tại đây
Bài tin liên quan
Tin đọc nhiều
Liên kết website
Thống kê truy cập
Hôm nay : 5
Hôm qua : 63.614
Tháng 08 : 322.423
Năm 2022 : 1.013.352